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 %>

Это все работает, как ожидалось. Однако, если я показываю 20 проектов, acts_as_taggable_on запускает 20 запросов для извлечения связанных тегов.

Как я могу включить загрузку тегов в исходный запрос БД?

Спасибо за ваше время.

3 ответа

Решение

Пытаться

@projects = Project.include (: категории).all

Использовать этот:

Post.includes (: метки).Все

а потом:

post.tags.collect {| t | t.name}

Я согласен с Яном Древняком, благодаря огромной производительности

Download.includes(:tags).all

и во взглядах:

download.tags.map {|t| link_to t, t.name}.join(', ')

Но все еще слишком медленно.

Любая другая идея?

Другие вопросы по тегам