Кэширование Acts-as-taggable-on не работает
Я использую GeForce-as-taggable-on gem v.2.4.1 с rails v.3.2.13 и ruby 1.9.3p392. Я только что обновил гем с v.2.2.1 до v.2.4.1 и, следуя этим инструкциям, я добавил столбец cached_tag_list в свою базу данных. Кажется, что столбец обновляется, как и ожидалось, при сохранении / обновлении записи, но когда я пытаюсь извлечь помеченные записи, я все еще вижу, как выполняются запросы тегов SQL (а не извлекаются кэшированные теги). Это мой код на мой взгляд:
<% if !tape.tag_list.empty? %>
<% for tag in tape.tags %>
<span><%= tag.name %></span>
<% end %>
<% end %>
Моя модель имеет следующую строку:
acts_as_taggable_on :tags
А вот снимок экрана с newrelic, показывающий выполняемые SQL-запросы, хотя эти записи сохранили строки тегов в столбце базы данных cached_tag_list.
Любые идеи, как включить кэширование с этим драгоценным камнем?
Спасибо Алекс
1 ответ
Пока эта ошибка не исправлена, вот обходной путь, который я реализовал:
<% if tape.cached_tag_list != "" %>
<% for tag in tape.cached_tag_list.split(', ') %>
<span><%= tag %></span>
<% end %>
<% end %>
Поскольку столбец cached_tag_list обновляется должным образом при каждом сохранении записи, я использую его для получения тегов каждой записи без вызова дополнительных запросов SQL, только один. Поскольку в столбце cached_tag_list хранится строка с разделенными запятыми тегами, я использую функцию split(), чтобы получить каждый из них.
Я делюсь этим на случай, если это пригодится кому-то еще..