簡體   English   中英

急切加載 controller 導軌 3

[英]Eager loading in controller in rails 3

在我的應用程序中,帖子有很多標簽。

標簽通過連接表 join_tags 連接

在列出所有帖子的索引視圖中,我執行以下操作:

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

這里的問題是它為每個帖子訪問數據庫以加載標簽。

有沒有辦法在 controller 中一次加載這些任務的所有標簽? 也許通過@Posts var? 我有一種通過急切加載的感覺?

是的,您可以,正如您所說, 急切加載是實現此目的的正確方法,您可能希望在 controller 操作中執行以下操作:

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

假設您在 model 帖子中有以下關系:

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

它將為您節省 n+1 個后標記查詢。

查看您的 controller 代碼會很有幫助,但我認為您正在尋找類似的東西:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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