Tengo un escenario como este:MongoId - utilizando incluye a seleccionar a los niños objetos en una relación 1..N referencia
blog.posts
donde cada puesto pertenece a otro objeto, dicen Tag (en un belongs_to, relación has_many), de modo que pueda hacer:
tag.posts
para evitar el problema N + 1, quiero ser capaz de hacer blog.posts, pero también agarro cada etiqueta asociada con cada mensaje, de modo que se generan dos consultas, uno para las publicaciones, y una para todas las etiquetas (en función de cada tag_id que pertenece a la publicación).
me di cuenta en la documentación MongoId que puedo hacer:
Post.includes(:tag).where(:blog_id: blog.id)
que conseguirme todos los mensajes que pertenecen a un blog, y también conseguir cada etiqueta asociada con el puesto y poner en el mapa de identidad (siempre y cuando se habilitado).
El problema es que quiero hacer:
blog.posts
y de alguna manera redefinir la consulta para hacer lo que quiero anteriormente. ¿Hay una manera de hacer eso?
En este momento estoy mitigar esto definiendo una extensión:
has_many :posts do
def with_tags
includes(:tag)
end
end
por lo que hago
blog.posts.with_tags
pero preferiría que
blog.posts
hace lo anterior por defecto.
Saludos.
¿hay alguna otra manera de hacer esto? es decir, de un objeto mongoide? – K2xL