0
我正在使用cache-digests gem並按照Railscast的說明操作,它會像您期望的那樣從緩存創建和讀取,但緩存似乎沒有正確更新一個關聯的記錄。Rails緩存沒有正確更新
將列表從一個類別移動到另一個類別時,category.live_entries
計數保持不變,因爲我將其從移動到,但上升到移動到的類別。
所以這聽起來像我需要一個touch: all
類型的方法,所以它觸及我正在移動它,以及它正在移動的那個?
_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 %>
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
如何解決這個任何想法?
猜猜我可以創建一個before_update回調來觸摸舊的類別 - 但有沒有更好的方法?