2010-08-17 17 views
1

J'utilise Devise comme solution d'authentification dans Rails et j'ai un fragment mis en cache: recent_users.Impossible d'expirer le fragment mis en cache par les méthodes par défaut dans Ruby on Rails + Devise

Je veux que ce fragment expire lorsqu'un nouvel utilisateur est enregistré, modifié ou supprimé, donc je mets dans mon (créé manuellement) users_controller.rb

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

Mais mon fragment n'expire lorsque le nouveau crée ou changements.

Mon user_sweeper contient les prescriptions de base

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 

Qu'est-ce que je fais mal?

Répondre

1

Problème résolu!

J'ai suivi ces étapes et tout fonctionne:

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

Dans registrations_controller.rb

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

Le problème était que les enregistrements dans un contrôleur Devise est séparé.

+0

J'ai aussi besoin de suivre quelques-unes des directions ici: http://devise.plataformatec.com.br/#getting-started/configuring-controllers – vlasits

0

Mettre cela dans applications_controller.rb

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