キャッシュスイーパーは、監視しているモデルにいくつかのフックがあるオブザーバーです。
class MySweeper < ActionController::Caching::Sweeper
observe MyModel
def after_update(my_model)
expire_page(...)
end
end
しかし、ドキュメントとガイドには、コントローラーでスイーパーを宣言することも記載されています。
class ApplicationController < ActionController::Base
cache_sweeper :my_sweeper
end
どうしてこれなの?モデルを観察して行動するという観察者のポイントではないでしょうか。コントローラーは、キャッシュがいつ期限切れになるか、または何が原因であるかを認識する必要はありませんか?
明確化
スイーパーをオブザーバーとして設定することについての私の理解は、「すべての場合において、MyModelが更新されたら、このクリーンアップコードを実行する」ことを意味するということです。
- それは正確ですか?
- もしそうなら、なぜ
cache_sweeper :my_sweeper
コントローラーで宣言する必要があるのですか?それは何をしますか?