act_as_taggable запускает запросы при каждом запросе

У меня есть модель User.rb, которая включает строку:

acts_as_taggable_on :industries, :uxes

[Термин «uxes» содержит настройки UX, принадлежащие пользователю, например, закрыл ли он определенное окно справки.]

Я заметил, что следующие запросы загружаются вверху каждого запроса, включающего @user:

User Load (1.4ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 354 LIMIT 1
ActsAsTaggableOn::Tag Load (0.4ms)  SELECT `tags`.* FROM `tags` INNER JOIN `taggings` ON `tags`.id = `taggings`.tag_id WHERE ((`taggings`.taggable_id = 354) AND (`taggings`.taggable_type = 'User')) AND (taggings.context = 'uxes' AND taggings.tagger_id IS NULL)  
AREL (0.3ms)  UPDATE `users` SET `last_request_at` = '2012-09-17 09:44:24', `perishable_token` = 'un5eK7SHDNzTegt7GPUk', `updated_at` = '2012-09-17 09:44:24' WHERE `users`.`id` = 354
ActsAsTaggableOn::Tag Load (0.3ms)  SELECT `tags`.* FROM `tags` INNER JOIN `taggings` ON `tags`.id = `taggings`.tag_id WHERE ((`taggings`.taggable_id = 354) AND (`taggings`.taggable_type = 'User')) AND (taggings.context = 'uxes' AND taggings.tagger_id IS NULL)
ActsAsTaggableOn::Tagging Load (0.4ms)  SELECT `taggings`.* FROM `taggings` WHERE `taggings`.`tagger_type` IS NULL AND `taggings`.`tagger_id` IS NULL AND `taggings`.`context` = 'uxes' AND `taggings`.`tag_id` IN (NULL) AND (`taggings`.taggable_id = 354 AND `taggings`.taggable_type = 'User')

Эти запросы добавляют время к каждой загрузке страницы, на которую загружается пользователь (т.е. 90%+ всех загрузок страниц). Почему acts_as_taggable заставляет выполнять эти запросы и как я могу остановить их загрузку без необходимости?


person sscirrus    schedule 18.09.2012    source источник


Ответы (1)


Гем ActsAsTaggableOn предположительно поддерживает кэширование ваших списков тегов непосредственно в вашей модели, см. также этот вопрос. Чтобы включить кэширование списков тегов, просто добавьте в таблицу столбец cached_tag_list, потому что методы кэширования ищут столбец с именем «cached_#{context}_list» в acts_as_taggable. Однако не уверен, что это работает.

person 0x4a6f4672    schedule 18.09.2012