2014-12-27 2 views
0
class Comment < ActiveRecord::Base 
belongs_to :article 
end 

class Article < ActiveRecord::Base 
    has_many :comments do 
     def posted_comments 
      #user_comment is just an attribute of comment. 
      collect(&:user_comment) 
     end 
    end 
end 

принести отправленные комментарии:Как вызвать метод экземпляра класса комментариев через модель статьи?

Article.first.comments.posted_comments 
=> ["Nice article posted", "comment 2 added", "Good article"] 

Над одним является извлечение правильных результатов, но я хочу, чтобы иметь более компактную версию. Что-то вроде этого:

Article.first.posted_comments 
#this should list the collection of comments on the article. 

Можем ли мы сделать что-то подобное с Rails ActiveRecord?

ответ

0

Для просто решения, вы можете определить метод, называемый posted_comments, который вызывает вложенные ассоциации как следующее:

def posted_commments 
    self.comments.posted_comments 
end 

Или, попробуйте следующий код:

has_many :posted_comments, -> { select("user_comment") }, class_name: "Comment" 
+0

Я думаю, мы может простой метод внутри article.rb файл: def posted_comments comments.collect (&: user_comment) end Следовательно, мы можем просто позвонить, Article.first.posted_comments – Ajay

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