私は cache-digests gem を使用しており、Railscast の指示に従っていると、期待どおりにキャッシュが作成されて読み取られますが、関連付けられたレコードに関してキャッシュが適切に更新されていないようです。
リストをあるカテゴリから別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 %>
カテゴリ.rb
class Category < ActiveRecord::Base
has_many :listings
def live_entries
listings.where(verified: true).count
end
end
list.rb
class Listing < ActiveRecord::Base
belongs_to :category, touch: true
これに取り組む方法についてのアイデアはありますか?
古いカテゴリに触れる before_update コールバックを作成できると思いますが、もっと良い方法はありますか?