Acts-as-taggable-on缓存似乎不起作用

时间:2013-07-02 10:44:34

标签: ruby-on-rails ruby-on-rails-3 caching acts-as-taggable-on acts-as-taggable

我正在使用带有rails v.3.2.13和ruby 1.9.3p392的acts-as-taggable-on gem v.2.4.1。 我刚刚将gem从v.2.2.1升级到v.2.4.1并跟随these instructions我已经在我的数据库中添加了一个'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”数据库列中保存了标记字符串。 SQL queries performed, caching not working

如何使用此gem启用缓存的任何想法?

谢谢, 亚历

1 个答案:

答案 0 :(得分: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()函数来获取它们中的每一个。

如果这对其他人有用,我会分享这个......