2010-01-11 4 views
18

Tamam, hevesli yükleme bazı şeyleri etrafında oynuyorum bulur ve 2 modeller böyle bir şey var:Raylar hevesli Yükleme

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

ve

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

Hangi çalışıyor dışarı iyi, ben bir Cookbook, sonra ben hevesli yük tarifleri ve sırayla yemek tarifleri istekli yük bulduğunda: recipetags:

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

Ama istediğim şey de, ben bir reçete açtığınızda yapmak o tümünde kessinler otomatik istekli dernek var etmek - temelde yapmak istiyorum:

rec = Recipe.find(123) 

ve sitenin istekli yük: recipetags bu durumda hem .

Bunun önemsiz bir şey olduğunu anlıyorum, ama aslında Reçete hakkında 4-5 dernek var, sadece onları burada göstermiyorum ve açıkça yapmak zorundayım yerine: her bulmayı istiyorum Sadece gerçekleşmesi için. Ben Recipe.find Recipe modelinde bunu yapmak için geçersiz kılabilirsiniz varsayarak, ama daha temiz bir yolu olup olmadığını merak ediyordum ....

cevap

33
Ben her zaman istekli yük istediğiniz seçilen modellerde bunu yapmak için default_scope kullanıyorum

:

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

Bu iyi görünüyor - bazı başka sorunlar ortaya hangi 2.3+ yalnızca öyle görünüyor olsa da app. 2.3.2 çalışıp test edip edemeyeceğimi göreceğim. –

+1

Bu harika :) +1 – abhijit

0

Bunu adlandırılmış kapsamlar ile yapabilmeniz gerekir, ama anlıyorum Bununla birtakım olası hatalar vardı, umarım hepsi sabittir.