首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >默认情况下,Ruby on Rails + Devise中的方法无法使缓存的片段过期

默认情况下,Ruby on Rails + Devise中的方法无法使缓存的片段过期
EN

Stack Overflow用户
提问于 2010-08-17 20:04:43
回答 2查看 368关注 0票数 1

我使用Devise作为Rails中的身份验证解决方案,并且我有一个缓存的片段:recent_users。

我希望这个片段在注册、更改或删除新用户时过期,因此我输入了(手动创建的) users_controller.rb

代码语言:javascript
复制
class UsersController < ApplicationController
    cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
...

但我的片段不会在新的创建或更改时过期。

我的user_sweeper包含基本的处方

代码语言:javascript
复制
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

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-17 20:12:17

问题解决了!

我执行了以下步骤,一切都正常了:

代码语言:javascript
复制
$ mkdir app/controllers/users
$ touch app/controllers/users/registrations_controller.rb

在registrations_controller.rb中

代码语言:javascript
复制
class Users::RegistrationsController < Devise::RegistrationsController
  cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]    
end

问题是Devise中的注册是一个单独的控制器。

票数 1
EN

Stack Overflow用户

发布于 2011-04-08 22:25:00

将此代码放入applications_controller.rb

代码语言:javascript
复制
class ApplicationController < ActionController::Base
    cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3502162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档