1

如果我有一個n + 1查詢問題,但沒有一個模型有控制器,我只是使用關聯來獲得我想要的。我能做什麼。N + 1查詢如何使用包括

DB模式:

Project belongs_to domain Domain has_many projects

Domain has_many domain_datas Domain_datas belongs_to domain

Domain_datas有一欄所以爲了得到index我在視圖中做這個叫index

project.domain.domain_datas.index 
+0

你能描述的模式,你正在試圖讓,情況多一點?如果這是一個Rails應用程序,你如何在沒有控制器的情況下工作? – micahbf

+0

發表你的看法,你在哪裏使用域和domain.domain_datas – usha

+0

我更新了問題。 – John

回答

1

下面應該讓大家充分預加載的模型:

Project.includes(domain: {domain_datas: :index}) 

也可參閱「13.1預先加載多個關聯」:http://guides.rubyonrails.org/active_record_querying.html

+0

我還有n + 1 – John

+0

爲什麼你有n + 1?也許我誤解了你的問題。我發佈的代碼應該使用單個數據庫查詢將所有對象加載到內存中(如果您在控制檯中運行它,您應該可以看到這一點)。這將您的n + 1查詢問題減少到1.我認爲這是您嘗試減少的查詢數量,它是什麼? –