サイトインデックスでアクションキャッシングが機能していて、正常に機能するSiteSweeperを設定しています。
# app/controllers/admin/sites_controller.rb
class Admin::SitesController < Admin::BaseController
cache_sweeper :site_sweeper, :only => [:create, :update, :destroy]
caches_action :index, :cache_path => '/admin/sites'
...
# app/sweepers/site_sweeper.rb
class SiteSweeper < ActionController::Caching::Sweeper
observe Site
def after_save(site)
expire_cache(site)
end
def after_destroy(site)
expire_cache(site)
end
def expire_cache(site)
expire_action '/admin/sites'
end
end
ただし、パブリッシャーが保存または破棄されるたびに/ admin/sitesを期限切れにしたいです。PublisherSweeperにこのようなものでサイトインデックスを期限切れにすることは可能ですか?
# app/sweepers/publisher_sweeper.rb
class PublisherSweeper < ActionController::Caching::Sweeper
observe Publisher
def after_save(publisher)
expire_cache(publisher)
end
def after_destroy(publisher)
expire_cache(publisher)
end
def expire_cache(publisher)
expire_action '/admin/sites'
end
end
さまざまなパブリッシャーアクション内でexpire_action'/admin/sites'を呼び出すことができることを知っています。スイーパーにこの機能があるかどうか疑問に思っています(コントローラーを少しきれいに保つため)。