Alors, disons que j'ai une classe d'utilisateurs, et je vais chercher une instance de l'utilisateur comme ceci:associations préchargement pour un modèle avec des requêtes
@user = User.first
Et permet de dire que l'utilisateur has_many: messages et post has_many: commentaires . Je veux précharger les associations de posts et de commentaires à utiliser plus tard. Cela peut être réalisé en faisant: ActiveRecord::Associations::Preloader.new.preload(@user, {:posts => :comments})
Cependant, je veux aussi lancer quelques requêtes sur ce modèle et ses associations préchargées. Donc, fondamentalement, je veux quelque chose d'équivalent de User.where({:comments => {:post => {:topic => "math"}}).includes({:posts => :comments}).find(some_id)
. Cependant, puisque j'ai déjà chargé le modèle une fois, je ne veux pas le charger à nouveau. Y at-il un moyen de passer une clause where à l'instruction Preloader
ci-dessus afin de créer une grande requête SQL au lieu de plusieurs plus petites? J'utilise Postgres, et d'après ce que je comprends, moins de requêtes en général signifie des temps de recherche plus rapides.