1
我在加載相關記錄時遇到了一些奇怪的行爲。我已經在「includes」中指定了需要的關係,並且所有的東西都被加載了四個查詢。但是,當我遍歷選定的記錄時,Rails開始爲每個相關實體發出一個查詢,大部分時間點擊緩存。我無法在類似設置的測試應用程序中重現此問題。以下是代碼的相關部分:在Rails中急切加載的問題
class Side < ActiveRecord::Base
belongs_to :photo
belongs_to :board
end
class Board < ActiveRecord::Base
belongs_to :address
has_many :sides
end
class Photo < ActiveRecord::Base
has_many :sides
end
class Address < ActiveRecord::Base
belongs_to :city
has_many :boards
end
class City < ActiveRecord::Base
has_many :addresses
end
q = Side.includes({:board => :address}, :photo).joins({:board => :address}, :projects).limit(50)
q.each {|s| s.photo}
聯接用於稍後添加謂詞。
當我開始迭代時,Rails加載所有記錄。 – synapse 2011-04-17 10:31:41
你在視圖中調用了哪些屬性? – 2011-04-17 12:36:33
也許值得設置子彈。它會警告你什麼時候應該/不應該使用急切的加載... https://github.com/flyerhzm/bullet – 2011-04-17 13:12:43