Eager loading: la forma correcta de hacer las cosas

Estoy ejecutando Ruby on Rails 3.1. Leí los siguientes artículos y documentaciones sobreeager cargando y me gustaría encontrar la manera correcta de hacer las cosas:

Eager Cargando asociaciones [Documentación oficial]ActiveRecord :: Asociaciones :: ClassMethods (consulte la sección "Carga ansiosa de asociaciones") [Documentación oficial]Eager loading [Artículo del blog]

Los # 2 dice

Nota que usando condiciones como Post.includes ([: author,: comments]). Where (['comments.approved =?', True]). All puede tener consecuencias no deseadas.

Los # 3 dice que esas consecuencias no deseadas son Not: los ejemplos son bastante iguales, por lo que cito el texto exacto del artículo del blog, pero debe tener en cuenta la solución, no la implementación específica):

Esta consulta, ya que usaría una IZQUIERDA IZQUIERDA, también descartaría todas las publicaciones sin un comentario con la palabra "primero" en cualquiera de sus comentarios.

Es decir, si hay objetos no "asociados", el objeto "principal asociado" no se cargará. Esto es lo que sucede cuando intento usar la carga ansiosa de agregando alguna condición me gusta.where(:category_relationships => {:user_id => @current_user.id}) en un miPregunta anterio, pero no quiero que eso suceda.

Entonces (derrotista porque probablemente no pueda usar la carga ansiosa en mi caso dondecondició no se puede establecer enhas_manyeclaración @: tenga en cuenta que en el código anterior la@current_user.id se "configura dinámicamente" a diferencia de los ejemplos presentes en los sitios mencionados), Me gustaría saber si existen prácticas / técnicas / estrategias para limitar las consultas a la base de datos ya que tengo un "problema N + 1".

al vez esas prácticas / técnicas / estrategias se puedan implementar utilizando el marco de Ruby on Rails . # 1 dice

Incluso aunque Active Record le permite especificar condiciones en las asociaciones cargadas ansiosas al igual que las combinaciones, la forma recomendada es utilizar combinaciones en su lugar.

¿Qué y cómo resolver este problema de la manera correcta?

al vez una solución sea recuperar y construir lo que necesito cargar ejecutando consultas de bases de datos específicas y separadas, pero el problema sería ¿Cómo "pasar" / "asociar" / "interpolar" los objetos recuperados "asociados" al objeto "principal asociado" para que puedan usarse de una manera "de carga más rápida"? Es decir, cómo hacer posible (ver el pregunta mencionada para más información) para usar código como@article.comments y recibo solo los comentarios que yo mismo deseé cargar? Despuésm carga ansiosa, esposibl / correct para hacer algo como@article.comments = my_eager_loaded_comments para "pasar" / "asociar" / "interpolar" comentarios a los artículos?

Respuestas a la pregunta(4)

Su respuesta a la pregunta