我有一个这样的清扫器,这个清扫器的目的很简单,只是为了让一些缓存过期,你可以在下面的代码中看到。
module CustomSweeper
class ArticleSweeper < ActionController::Caching::Sweeper
observe Article
def after_update(record)
expire_cache record
Rails.logger.debug 'After_update sweeper is activated'
end
def after_destroy(record)
expire_cache record
Rails.logger.debug record.inspect
Rails.logger.debug 'After_destroy sweeper is activated'
end
private
def expire_cache(record)
Rails.logger.debug 'Going to expire index and show'
expire_action :controller => '/articles', :action => 'index'
expire_action :controller => '/articles', :action => 'show', :id => record.id
Rails.logger.debug 'End expiring index and show'
end
end
end
奇怪的是,这个清扫器使用 after_update 正确过期,但使用 after_destroy,没有缓存过期。我在自己的 ArticlesController 中使用“更新”,但“销毁”来自 rails_admin。但是,我认为“/articles”中的斜线确保它匹配正确的 ::ArticlesController。你有什么主意吗?为什么从 rails_admin 销毁后缓存不能过期?