1
我有一個預告片模型,每個預告片belongs_to電影和一個電影has_many:發佈。和預告片has_many:通過發佈:電影Rails:通過關聯預加載has_many
發佈有一列:可以是「Netflix」,「劇院」或「激流」的媒介。
在我的控制器:
@trailers = Trailer.all
在我看來,我要檢查每一個拖車的版本:
<%= render @trailers %>
則:
if trailer.releases.where(medium:"Torrent").first
# show a Torrent icon
end
有沒有一種辦法預裝trailer.releases,這樣我就不會錘擊數據庫,並且爲每個渲染的預告片調用trailer.releases.where(medium:"Torrent").first, trailer.releases.where(medium:"Netflix").first, trailer.releases.where(medium:"Theater").first
?
如何對此進行優化?
在我的回答看看這個[SO問題](http://stackoverflow.com/questions/35374387/how-to-specify-eager-loading-association-in-rails-model/35374496#35374496) – nbermudezs
基本上你需要做的是在你的Trailer模型中添加一個default_scope。如果您不想在應用程序的任何位置包含發佈版本,則可以使用命名範圍而不是'default_scope' – nbermudezs