[英]Rails: eager load on fetching associations, not on find
我有三個嵌套模型: user
有很多plates
, plate
有很多fruits
。 我還有一個current_user
幫助器方法,該方法在before過濾器中運行以提供身份驗證。 因此,當我到達控制器時,我已經有了我的user
對象。 如何一次加載所有用戶的plates
和fruits
?
換句話說,我想做些類似的事情:
@plates = current_user.plates(include: :fruits)
我該如何實現?
我正在使用Rails 3.1.3。
您可能需要在關系上使用提供的#includes
方法。 除非您打算立即處理記錄,否則不要使用#all
,它會立即破壞許多形式的緩存。
也許像這樣: @plates = current_user.plates.includes(:fruits)
不幸的是,Rails API的某些部分沒有得到應有的詳細記錄。 如果您對Rails查詢界面還有其他疑問,我建議您檢查以下資源:
查詢界面可能是Rails堆棧中最困難的部分,尤其是在Rails 3.0和3.1所做的更改中。
你可以做
ActiveRecord::Associations::Preloader.new([current_user], :plates => :fruit).run
松散current_user之后,急於進行負載關聯。 第二個參數可以是通常傳遞給includes
任何東西:符號,符號數組,哈希等
@plates = current_user.plates.all(:include => :fruits)
應該這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.