2010-12-08 3 views
4

のRails 3.0.1 Mongoid(2.0.0.beta.20)Mongoid:コメント フィールド:親

級ポスト embeds_manyに埋め込まれた文書から実行するコールバックcomments_count エンド

Class Comment 
embedded_in :commentable, :inverse_of => :comments 
end 

私は最もコメントの多い10の記事を選択したいと思う。これを行うには、投稿にcomments_countフィールドが必要です。しかし、私のコメントはポリモーフィックなので(Post.comments、Message.commentsなど)、私はポストでincコールバックを作成したくありません。私がしなければならないのは、コメントのコールバックを作成して、投稿のcomment_countフィールドを更新することです。

私はparrent文書からフィールドに埋め込まれた文書にINC操作を行うとparrentドキュメントここ

答えて

6

からこのコールバックを実行することができますかわからない埋め込まれた多型CommentからPostをインクリメントする方法です:

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 

新しいコメントが作成されるたびにこのコールバックが実行されるので、親ドキュメントからの実行を心配する必要はありません。それが動作するかどうか私に教えてください。

埋め込みドキュメントのコールバックの詳細については、this SO answerGithub issueを参照してください。

+0

ありがとうございます。 _parentメソッドの説明を含むmongodbドキュメントへのリンクがありますか? – Lewy

+0

'_parent'のドキュメントを見つけることができません。試行錯誤して自分で見つけました。 – bowsersenior

関連する問題