2010-08-17 1 views
1

Я использую Devise как решение для проверки подлинности в Rails, и у меня есть кешированный фрагмент: recent_users.Не удается завершить кешированный фрагмент по умолчанию в Ruby on Rails + Devise

Я хочу, чтобы этот фрагмент истекает, когда новый пользователь регистрируется, изменен или удален, так что я положил в моем (созданный вручную) users_controller.rb

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

Но мой фрагмент не истекает, когда новые или создает изменения.

Мой user_sweeper содержит основные предписания

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 

Что я делаю неправильно?

ответ

1

Проблема решена!

Я следовал за этим шаги и все работает:

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

В registrations_controller.rb

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

Проблема в том, что в Devise зарегистрирования отдельный контроллер.

+0

Я также необходимо следовать несколько направлений здесь: http://devise.plataformatec.com.br/#getting-started/configuring-controllers – vlasits

0

Поместите это в applications_controller.rb

class ApplicationController < ActionController::Base 
    cache_sweeper :user_sweeper, :only => [:create, :update, :destroy] 
... 
Смежные вопросы