Rails 3.0.1 Mongoid(2.0.0.beta.20)
班级邮报 embeds_many:评论 字段:comments_count 端
Class Comment
embedded_in :commentable, :inverse_of => :comments
end
我想选择10个评论最多的帖子。要做到这一点,我需要Post中的comments_count字段。但由于我的评论是多态的(Post.comments,Message.comments等),我不希望在Post中创建inc回调。我不想做的是在Comment中创建回调,它将更新Post中的comment_count字段。
我不知道如何在parrent文档中对Field中的嵌入式文档执行inc操作,并从parrent文件执行此回调
答案 0 :(得分:6)
以下是如何从嵌入式多态Post
增加Comment
:
Class Comment
after_create :update_post_comment_count
def update_post_comment_count
if self._parent.class == Post
Post.collection.update( {'_id' => self._parent._id},
{'$inc' => {'comment_count' => 1}} )
end
end
end
我很确定无论何时创建新的Comment都会执行此回调,因此我认为您不必担心从父文档执行它。如果有效,请告诉我。
有关嵌入式文档中回调的详细信息,请参阅this SO answer和此Github issue。