Не удается истечь кэшированный фрагмент по умолчанию методами в Ruby on Rails + Devise - PullRequest
1 голос
/ 17 августа 2010

Я использую Devise в качестве решения для аутентификации в Rails, и у меня есть кэшированный фрагмент: latest_users.

Я хочу, чтобы срок действия этого фрагмента истек при регистрации, изменении или удалении нового пользователя, поэтому я вставил свой (созданный вручную) 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

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 17 августа 2010

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

Я выполнил следующие действия и все работает:

$ 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 голосов
/ 08 апреля 2011

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

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