2010-11-18 5 views

ответ

3

Вы должны быть в состоянии использовать delegate передавать вызовы метода к другому объекту.

class Article < ActiveRecord::Base 
    has_one :commentable 

    delegate :comments, :to => :commentable 
end 

Edit:

Я предполагаю, что вы не имели в виду использовать постоянную статью в вашем примере, потому что не будет работать в любом случае. Эти методы являются примерами и должны использоваться как:

article = Article.first 

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

Да, это то, что я искал. Есть ли способ для псевдонимов? Мои фактические модели поддаются неудобным именам. Могу ли я сделать article.aliased == article.commentable.comments? – Dex

+0

Возможно, области будут лучше для этого. – Dex

+0

@Dex В типичной рубиновой моде есть несколько разных способов, которыми вы могли бы псевдоним имени комментариев. Вам нужен один и тот же псевдоним для всех комментариев или вам нужны уникальные псевдонимы для каждого из них? –

Смежные вопросы