0

私は 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 コールバックを作成できると思いますが、もっと良い方法はありますか?

4

1 に答える 1

0

これを回答として追加するだけでOKですが、より良い解決策がある場合は、お気軽に共有してください。

古いカテゴリに触れるために after_update を追加しました。

  def touch_old_category(listing)
    cat = listing.category_id_was
    Category.find(cat).touch if cat
  end
于 2012-12-24T18:49:14.483 に答える