2010-01-11 2 views
18

OK, je l'ai été jouer avec quelques-unes des choses de chargement avides, et ont 2 modèles quelque chose comme:Rails Désireuse Chargement sur All Constate

Class Recipe < ActiveRecord::Base 
    belongs_to :cookbook 
    has_many :recipetags 
end 

et

Class Cookbook < ActiveRecord::Base 
    has_many :recipes, :include => [:recipetags] 
end 

qui travaille bien, quand je trouve un livre de recettes, je charge les hâte recettes, et à son tour les recettes charge: les impatients recipetags:

cb = Cookbook.find(10590, :include => [:recipes]) 

Mais ce que je veux aussi faire est à chaque fois que j'ouvre une recette, faites-le tirer dans tout cela est d'associations désireux automatiquement - au fond, je veux faire:

rec = Recipe.find(123) 

et l'ont charge hâte le: recipetags dans ce cas aussi bien .

Je me rends compte que cela semble banal, mais en réalité, j'ai environ 4-5 associations sur recettes, je ne suis pas les montrer ici, et plutôt que d'avoir à faire explicitement: inclure sur chaque appel que je trouve voudrais ça arrive juste. Je suppose que je peux remplacer Recipe.find pour le faire dans le modèle de recette, mais je me demandais s'il y avait une manière plus propre ....

Répondre

33

Je me sers default_scope de le faire sur certains modèles où je veux toujours à la charge hâte:

class Post < ActiveRecord::Base 
    has_many :comments 
    default_scope :include => :comments, :order => ["title ASC"] 
    ... 
end 
+0

Cela semble bon - bien qu'il semble que ce soit seulement disponible en 2.3+, qui a introduit d'autres problèmes dans l'application. Je vais voir si je peux faire 2.3.2 travailler et le tester. –

+1

C'est génial :) +1 – abhijit

0

Vous devriez être en mesure de le faire avec des portées nommées, mais je comprends que il y avait un certain nombre de bugs possibles avec cela, j'espère qu'ils sont tous corrigés maintenant.

Questions connexes