簡體   English   中英

Rails:渴望獲取關聯,而不是查找

[英]Rails: eager load on fetching associations, not on find

我有三個嵌套模型: user有很多platesplate有很多fruits 我還有一個current_user幫助器方法,該方法在before過濾器中運行以提供身份驗證。 因此,當我到達控制器時,我已經有了我的user對象。 如何一次加載所有用戶的platesfruits

換句話說,我想做些類似的事情:

@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM