我正在使用cache-digests gem并按照Railscast的说明,它按照您的预期创建和读取缓存,但缓存似乎没有正确地更新相关记录。
将列表从一个类别移动到另一个类别时, 所以听起来我需要一个 _category.html.erb category.rb listing.rb 关于如何解决这个问题的任何想法? 猜猜我可以创建一个before_update回调来触及旧类别 - 但是有更好的方法吗?category.live_entries
计数对于我从移动的类别保持不变,但是会将其移动到我移动到的类别。< / p>
touch: all
类型的方法,所以它触及我正在移动它的那个以及它正在移动的那个?<% cache category do %>
<li>
<%= link_to category.name, category %>
<% if category.live_entries > 0 %>
(<%= category.live_entries %>)
<% end %>
- <%= category.desc %>
</li>
<% end %>
class Category < ActiveRecord::Base
has_many :listings
def live_entries
listings.where(verified: true).count
end
end
class Listing < ActiveRecord::Base
belongs_to :category, touch: true
答案 0 :(得分:0)
好的只是添加这个作为答案 - 但如果有人有更好的解决方案,请随时分享。
我刚添加了一个after_update来触摸旧类别:
def touch_old_category(listing)
cat = listing.category_id_was
Category.find(cat).touch if cat
end