[英]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.