私はこのようなシナリオがあります。各ポストは別のオブジェクトに属しmongoid - 使用しては1..N参照関係にあるオブジェクトの子供たちを選択することが含まれる
blog.posts
は、belongs_toの中で(タグ言う、has_manyの関係を)ので、私は行うことができます、
tag.posts
をN + 1問題を防ぐために、私はblog.postsを行うことができるようにしたいが、また、2つのクエリが生成されるように、各ポストに関連付けられた各タグをつかみます1つは投稿用、もう1つはすべてのタグ用(投稿に属する各tag_idに基づく)です。
私は私が行うことができますmongoidドキュメントに気づい:
それは提供私に(ブログに所属し、またポストに関連付けられた各タグを取得し、アイデンティティ・マップに入れて、すべての記事を取得しますPost.includes(:tag).where(:blog_id: blog.id)
有効)。
blog.posts
を何とか私は上記のやりたいクエリを再定義:問題がある
、私がやりたいです。それを行う方法はありますか?私は拡張子を定義することによって、これを軽減しています現時点では
:
has_many :posts do
def with_tags
includes(:tag)
end
end
私は
blog.posts.with_tags
を行うが、私は
blog.posts
は上記を行うことを好むようにデフォルトでは
乾杯。
他にもこれを行う方法はありますか?つまり、モンゴイドのオブジェクトからですか? – K2xL