红宝石在轨道上

我在rails v.3.2.13和ruby 1.9.3p392上使用gem v.2.4.1上的acts-as-taggable。 我刚刚将v.2.2.1中的gem升级到了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的屏幕截图,显示即使这些记录已将标记字符串保存在“cached_tag_list”数据库列中的SQL查询。 SQL查询执行,缓存不起作用

任何想法如何启用这个宝石缓存?

谢谢,亚历克斯


在修正这个bug之前,我已经实现了一个解决方法:

    <% 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()函数来获取它们中的每一个。

如果这对其他人有用,我将分享此信息。

链接地址: http://www.djcxy.com/p/36023.html

上一篇: ruby on rails

下一篇: Submit Select2 Form in Rails via Javascript with Acts