Le nouveau style de chargement avide utilise plusieurs requêtes pour charger des associations. Est-il possible d'ajouter des conditions à ces requêtes de chargement supplémentaires? par exemple.Chargement rapide avec conditions
Bakery.find(:all, :include => :bakers)
va générer une requête de chargement désireux similaire à ceci:
SELECT * FROM bakers
bakers
OU (bakers
.bakery_id IN (1,2,3,4,5))
Est-il possible d'ajouter des conditions à cette demande de chargement désireuse?
Mise à jour: Pour (peut-être) rendre cela plus clair, la requête que je suis désireux de reproduire avec AR (sans SQL) est:
SELECT * FROM bakeries
LEFT JOIN bakers
SUR bakeries.id = boulangers. bakery_id ET bakers.hat = 'on'
Plus précisément, j'espérais pouvoir modifier la deuxième instruction SQL chargée désireux d'être.
SELECT * FROM bakers
bakers
OU (bakers
.bakery_id IN (1,2,3,4,5) ET bakers
.hat = 'on')
Est-ce possible ou dois-je utiliser SQL? Juste à la recherche du "Rails" façon de le faire. :)
Merci pour la réponse Bill. J'ai essayé ceci, mais il effectue une jointure, renvoyant seulement des boulangeries avec des boulangers correspondant aux conditions fournies. Ce que je voudrais, c'est obtenir toutes les boulangeries, avec seulement des boulangers spécifiques chargés avec empressement. Fondamentalement, un équivalent chargé de ces deux requêtes: boulangeries = Bakery.find (: all); bakers = bakeries.find (: all,: conditions => {: hat => 'on'}) – Jay
Pour ajouter plus, j'utilise actuellement Bakery.find (: all), et à mon avis, pour chaque boulangerie, J'utilise: bakery.bakers.find (: all,: conditions => {: hat => 'on'}). Vous cherchez un moyen de le faire, mais sans toutes les requêtes supplémentaires. – Jay
Merci pour les clarifications. Je ne suis pas tout à fait sûr s'il y a un moyen d'obtenir exactement ce dont vous avez besoin. Peut-être jouer avec un couple de named_scopes et voir si cela fait ce dont vous avez besoin, mais j'ai le sentiment que ce ne sera pas non plus. –