2

我将作为可标记的gem v.2.4.1 与 rails v.3.2.13 和 ruby​​ 1.9.3p392 一起使用。我刚刚将 gem 从 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”数据库列中保存了标记字符串。 已执行 SQL 查询,缓存不起作用

任何想法如何使用这个 gem 启用缓存?

谢谢,亚历克斯

4

1 回答 1

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

我正在分享这个,以防这对其他人有用..

于 2013-07-08T18:31:12.940 回答