在Rails中过滤清理程序调用

时间:2011-06-16 05:16:26

标签: ruby-on-rails caching

我在严重依赖缓存的模型上使用Devise进行身份验证。由于登录和注销都有更新语句,因此每次登录/注销时都会调用此模型的缓存清理程序。

有没有办法过滤清扫程序回调的来源?

1 个答案:

答案 0 :(得分:1)

我试着像这样跳过清扫车:

class ModelSweeper < ActionController::Caching::Sweeper

   def after_update(model)
       unless model.current_sign_in_at_changed? or model.last_sign_in_at_changed?
         expire_cache_for(model) 
       end
   end

   private
   def expire_cache_for(model)
     #some expire cache code
   end

end

current_sign_in_at和last_sign_in_at是在sign_in和sign_out期间由设计更新的两个字段。这段代码明显假设您没有自己的应用程序逻辑来更新这些字段,只设计更新它们。