acts_as_taggable_on: как оптимизировать запрос? - PullRequest
9 голосов
/ 15 октября 2011

Я использую 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 ]

13 голосов
/ 15 октября 2011

Попробуйте

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

2 голосов
/ 22 апреля 2015

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

Download.includes(:tags).all

и в просмотрах:

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

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

Есть еще идеи?

1 голос
/ 22 июля 2016

Используйте это:

Post.includes (: теги) .all

, а затем:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...