2010-11-18 4 views

Répondre

3

Vous devriez pouvoir utiliser delegate pour passer des appels de méthode à un autre objet.

class Article < ActiveRecord::Base 
    has_one :commentable 

    delegate :comments, :to => :commentable 
end 

Edit:

Je suppose que vous ne voulez pas utiliser l'article constant dans votre exemple, car cela ne fonctionnerait pas de toute façon. Ces méthodes sont des méthodes d'instance et doivent être utilisées comme:

article = Article.first 

article.commentable.comments 
article.comments (Equivalent to above) 
+0

Oui, c'est ce que je cherchais. Y a-t-il un moyen d'aliaser les commentaires? Mes modèles actuels se prêtent à des noms gênants. Est-ce que je pourrais faire le article.aliased == article.commentable.comments? – Dex

+0

Peut-être que les étendues seraient mieux pour cela. – Dex

+0

@Dex En mode ruby, il existe plusieurs façons d'aliaser le nom des commentaires. Voulez-vous le même alias pour tous les objets commentables ou voulez-vous des alias uniques pour chacun d'eux? –

Questions connexes