在我的應用程序中,帖子有很多標籤。急切加載在控制器中的導軌3
的標籤是經由連接表連接,join_tags
在我的索引視圖,其中列出了所有的職位,我做了什麼,像這樣:
<% post.tags.each do |tag| %>
<%= tag.name %>,
<% end %>
這裏的問題,是它擊中每個帖子的數據庫加載標籤。
有沒有辦法在控制器中加載這些任務的所有標籤?也許通過@Posts var?我有一種感覺,通過渴望加載?
在我的應用程序中,帖子有很多標籤。急切加載在控制器中的導軌3
的標籤是經由連接表連接,join_tags
在我的索引視圖,其中列出了所有的職位,我做了什麼,像這樣:
<% post.tags.each do |tag| %>
<%= tag.name %>,
<% end %>
這裏的問題,是它擊中每個帖子的數據庫加載標籤。
有沒有辦法在控制器中加載這些任務的所有標籤?也許通過@Posts var?我有一種感覺,通過渴望加載?
可以呀,正如你所說,eager loading是實現這一目標的正確的方式,你可能想要做這樣的事情在你的控制器動作:
def index
@posts = Post.includes(:tags).all
end
假設你有以下關係的樁模型:
has_many :join_tags
has_many :tags, :through => :join_tags
這將節省您的N + 1後的標籤查詢。
這將是有益的,看看你的控制器代碼,但我認爲你正在尋找的東西,如:
@posts = Post.all(:include => :tags)
實際上+1到jpemberthy的回答,打我衝了更多最新的答案。 – 2011-05-25 01:06:37
大聲笑+1。 – jpemberthy 2011-05-25 01:07:13