红宝石在轨道上
我在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查询。
任何想法如何启用这个宝石缓存?
谢谢,亚历克斯
在修正这个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