Ho uno scenario come questo:mongoid - utilizzando include per selezionare i bambini oggetti in un rapporto 1..N riferimento
blog.posts
dove ogni post appartiene ad un altro oggetto, dicono Tag (in un belongs_to, rapporto has_many), così posso fare:
tag.posts
per evitare il problema N + 1, voglio essere in grado di fare blog.posts, ma anche afferrare ogni tag associato ad ogni post, in modo che due query sono generate, uno per i post e uno per tutti i tag (basato su ogni tag_id che appartiene al post).
ho notato nella documentazione mongoid posso fare:
Post.includes(:tag).where(:blog_id: blog.id)
che mi avranno tutti i messaggi appartenenti a un blog, e anche ottenendo ogni tag associato alla posta e mettere nella mappa di identità (a condizione che sia abilitato).
Il problema è che io voglio fare:
blog.posts
e in qualche modo ridefinire la query per fare quello che voglio sopra. C'è un modo per farlo?
Al momento sto mitigare questo definendo un prolungamento:
has_many :posts do
def with_tags
includes(:tag)
end
end
in modo che faccio
blog.posts.with_tags
ma io preferirei che
blog.posts
fa quanto sopra per impostazione predefinita.
Cheers.
c'è un altro modo per farlo? cioè da un oggetto mongoidico? – K2xL