2011-05-25 59 views
1

在我的應用程序中,帖子有很多標籤。急切加載在控制器中的導軌3

的標籤是經由連接表連接,join_tags

在我的索引視圖,其中列出了所有的職位,我做了什麼,像這樣:

<% post.tags.each do |tag| %> 
    <%= tag.name %>,         
<% end %> 

這裏的問題,是它擊中每個帖子的數據庫加載標籤。

有沒有辦法在控制器中加載這些任務的所有標籤?也許通過@Posts var?我有一種感覺,通過渴望加載?

回答

4

可以呀,正如你所說,eager loading是實現這一目標的正確的方式,你可能想要做這樣的事情在你的控制器動作:

def index 
    @posts = Post.includes(:tags).all 
end 

假設你有以下關係的樁模型:

has_many :join_tags 
has_many :tags, :through => :join_tags 

這將節省您的N + 1後的標籤查詢。

0

這將是有益的,看看你的控制器代碼,但我認爲你正在尋找的東西,如:

@posts = Post.all(:include => :tags) 
+0

實際上+1到jpemberthy的回答,打我衝了更多最新的答案。 – 2011-05-25 01:06:37

+0

大聲笑+1。 – jpemberthy 2011-05-25 01:07:13