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 ответа
Решение
Использовать этот:
Post.includes (: метки).Все
а потом:
post.tags.collect {| t | t.name}
Я согласен с Яном Древняком, благодаря огромной производительности
Download.includes(:tags).all
и во взглядах:
download.tags.map {|t| link_to t, t.name}.join(', ')
Но все еще слишком медленно.
Любая другая идея?