acts_as_taggable_on:如何优化查询?

Erw*_*inM 9 activerecord ruby-on-rails acts-as-taggable-on

acts_as_taggable_on在我目前的Rails项目中使用.在一个概述页面上,我显示了一个带有相关标签的对象索引.我使用以下代码:

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 %>
Run Code Online (Sandbox Code Playgroud)

这一切都按预期工作.但是,如果我显示20个项目,acts_as_taggable_on则会触发20个查询以获取关联的标记.

如何在原始数据库查询中包含标记的加载?

谢谢你的时间.

小智 13

尝试

@projects = Project.includes(:categories).all

  • 这是感谢.我尝试了这个,但它没有用,因为我使用`category_list`来显示标签.如果你只使用`Project.categories`就可以了. (4认同)
  • 刚碰到这个,我使用'.includes'而不是使用'category_list'我使用了类似categories.map {| cat | cat.name}在视图中,仍然看到了巨大的性能提升. (3认同)