如何通过Article Model调用注释类的实例方法?

时间:2014-12-27 21:43:20

标签: ruby-on-rails rails-activerecord

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做这样的事情吗?

1 个答案:

答案 0 :(得分:0)

对于简单的解决方案,您可以定义调用嵌套关联的名为posted_comments的方法,如下所示:

def posted_commments
   self.comments.posted_comments 
end

或者,请尝试以下代码:

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