ruby-on-rails-3 – Rails.cache.fetch插入额外的值

我们有一个页面显示我们的应用程序的顶级组.排行榜的计算是昂贵的,因此我们将结果缓存一小时,如下所示:

@groupboard = Rails.cache.fetch("top_groups",:expires_in => 1.hour) do  
  Group.top_groups
end

这是在第一次写入缓存后出错.在控制台中查看,我看到Group.top_groups返回的项目数组如下所示:

[#<Group id: 4,name: "IBP",rank: 6,users_count: 13,leader_id: 4662>,3887]

当我查看从缓存返回的结果时,它看起来如下:

[#<Group id: 4,:@new_record_before_save],false,3887]

有谁知道什么会导致@new_record_before_save和’false’值插入缓存中此对象的所有条目?

我们使用的是Dalli,Memcached 1.4.9,Rails 3.2.4,Ruby 1.9.2

解决方法

AR对象上存在Rails缓存的错误,该错误具有关联对象.试试以下:

@groupboard = Rails.cache.fetch("top_groups",:expires_in => 1.hour) do  
  Group.top_groups.map(&:reload)
end

了解更多
https://github.com/mperham/dalli/issues/250

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...