views:

14

answers:

1

I'm using Devise as authenticating solution in Rails and I have a cached fragment :recent_users.

I want this fragment to expire when a new user is registered, changed or removed, so I put in my(manually created) users_controller.rb

class UsersController < ApplicationController
    cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
...

But my fragment does not expire when new creates or changes.

My user_sweeper contains basic prescriptions

class UserSweeper < ActionController::Caching::Sweeper
observe User

def after_save(user)
   expire_cache(user)
end

def after_destroy(user)
  expire_cache(user)
end

private
  def expire_cache(user)
    expire_fragment :recent_users
  end
end

What am I doing wrong?

A: 

Problem solved!

I followed this steps and everything works:

$ mkdir app/controllers/users
$ touch app/controllers/users/registrations_controller.rb

In registrations_controller.rb

class Users::RegistrationsController < Devise::RegistrationsController
  cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]    
end

Problem was that Registrations in Devise is a separate controller.

Colorblind