Ruby on rails 3 Rails缓存未正确更新
我正在使用缓存摘要gem,并按照Railscast的说明进行操作,它会像您所期望的那样创建缓存并从中读取,但缓存似乎没有根据相关记录进行正确更新 将列表从一个类别移动到另一个类别时,我将列表从一个类别移动到另一个类别时,Ruby on rails 3 Rails缓存未正确更新,ruby-on-rails-3,caching,Ruby On Rails 3,Caching,我正在使用缓存摘要gem,并按照Railscast的说明进行操作,它会像您所期望的那样创建缓存并从中读取,但缓存似乎没有根据相关记录进行正确更新 将列表从一个类别移动到另一个类别时,我将列表从一个类别移动到另一个类别时,category.live_entries计数保持不变,但对于我将列表移动到的类别,计数会上升 所以听起来我需要一个touch:alltype方法,这样它就可以接触到我要移动的对象和它要移动到的对象了 _category.html.erb <% cache category
category.live_entries
计数保持不变,但对于我将列表移动到的类别,计数会上升
所以听起来我需要一个touch:all
type方法,这样它就可以接触到我要移动的对象和它要移动到的对象了
_category.html.erb
<% cache category do %>
<li>
<%= link_to category.name, category %>
<% if category.live_entries > 0 %>
(<%= category.live_entries %>)
<% end %>
- <%= category.desc %>
</li>
<% end %>
0 %>
()
-
category.rb
class Category < ActiveRecord::Base
has_many :listings
def live_entries
listings.where(verified: true).count
end
end
类别
listing.rb
class Listing < ActiveRecord::Base
belongs_to :category, touch: true
类列表
有没有办法解决这个问题
我想我可以创建一个“更新前”回调来触及旧类别-但是有更好的方法吗?好的,只是添加这个作为答案-但是如果有人有更好的解决方案,请随时与我们分享 我刚刚添加了一个after_更新来接触旧类别:
def touch_old_category(listing)
cat = listing.category_id_was
Category.find(cat).touch if cat
end