Rails cache sweeper fails on create

151 views Asked by At

I have a controller where:

caches_action :show
cache_sweeper :the_model_sweeper, :only => [:update, :destroy]

and sweeper:

observe TheModel

def after_save(the_model)
  expire_cache(the_model)
end

def after_destroy(the_model)
  expire_cache(the_model)
end

def expire_cache(the_model)
  expire_action :controller => '/the_model', :action => 'show'
end

and am getting:

ActionController::RoutingError (No route matches {:controller=>"/the_model", :action=>"show"}):

The problem I'm guessing is becuase the sweeper is called after_save, when on a new record there will be nothing to destroy, even though I have specifically said for it only to sweep on update or delete.

(I have obviously renamed the model to "The Model" for example purposes)

1

There are 1 answers

0
Chris Edwards On

The problem was due to using ActiveAdmin, and forgetting (doh...) to add :only => [:update, :destroy] to the active admin config for that model