我在当前的Rails项目中使用acts_as_taggable_on
。在一个概述页面上,我显示了一个带有相关标签的对象索引。我使用以下代码:
class Project < ActiveRecord::Base
acts_as_taggable_on :categories
end
class ProjectsController < ApplicationController
def index
@projects = Project.all
end
end
# in the view
<% @projects.each do |p| %>
<%= p.name %>
<% p.category_list.each do |t| %>
<%= t %>
<% end %>
<% end %>
这一切都按预期工作。但是,如果我显示20个项目,acts_as_taggable_on
将触发20个查询以获取关联的标记。
如何在原始数据库查询中包含标记的加载?
谢谢你的时间。
答案 0 :(得分:13)
尝试
@projects = Project.includes(:categories).all
答案 1 :(得分:2)
我同意Jan Drewniak的观点,
提升了巨大的表现Download.includes(:tags).all
和观点:
download.tags.map {|t| link_to t, t.name}.join(', ')
但仍然太慢。
还有其他想法吗?
答案 2 :(得分:1)
使用此:
Post.includes(:标签)。所有
然后:
post.tags.collect {| t | t.name}