Ruby on rails RubyonRails+;中的默认方法无法使缓存片段过期;设计
我在Rails中使用Desive作为身份验证解决方案,我有一个缓存片段:最近的用户 我希望这个片段在新用户注册、更改或删除时过期,因此我将我的(手动创建的)users_controller.rb放入Ruby on rails RubyonRails+;中的默认方法无法使缓存片段过期;设计,ruby-on-rails,caching,devise,fragment-caching,Ruby On Rails,Caching,Devise,Fragment Caching,我在Rails中使用Desive作为身份验证解决方案,我有一个缓存片段:最近的用户 我希望这个片段在新用户注册、更改或删除时过期,因此我将我的(手动创建的)users_controller.rb放入 class UsersController < ApplicationController cache_sweeper :user_sweeper, :only => [:create, :update, :destroy] ... class Users::Registrat
class UsersController < ApplicationController
cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
...
class Users::RegistrationsController < Devise::RegistrationsController
cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
end
class ApplicationController < ActionController::Base
cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
...
class UsersController[:创建,:更新,:销毁]
...
但我的片段不会在新创建或更改时过期
我的用户_清扫器包含基本处方
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
class UserSweeper
我做错了什么?问题解决了
我遵循了以下步骤,一切正常:
$ mkdir app/controllers/users
$ touch app/controllers/users/registrations_controller.rb
在注册中\u controller.rb
class UsersController < ApplicationController
cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
...
class Users::RegistrationsController < Devise::RegistrationsController
cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
end
class ApplicationController < ActionController::Base
cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
...
类用户::注册控制器<设计::注册控制器
缓存\u清理器:用户\u清理器,:only=>[:创建,:更新,:销毁]
结束
问题是Desive中的注册是一个单独的控制器。问题解决了
我遵循了以下步骤,一切正常:
$ mkdir app/controllers/users
$ touch app/controllers/users/registrations_controller.rb
在注册中\u controller.rb
class UsersController < ApplicationController
cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
...
class Users::RegistrationsController < Devise::RegistrationsController
cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
end
class ApplicationController < ActionController::Base
cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
...
类用户::注册控制器<设计::注册控制器
缓存\u清理器:用户\u清理器,:only=>[:创建,:更新,:销毁]
结束
问题是,DeVICE中的注册是一个单独的控制器。将其放在applications\u controller.rb中
class UsersController < ApplicationController
cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
...
class Users::RegistrationsController < Devise::RegistrationsController
cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
end
class ApplicationController < ActionController::Base
cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
...
class ApplicationController[:创建,:更新,:销毁]
...
将其放入应用程序\u controller.rb
class UsersController < ApplicationController
cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
...
class Users::RegistrationsController < Devise::RegistrationsController
cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
end
class ApplicationController < ActionController::Base
cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
...
class ApplicationController[:创建,:更新,:销毁]
...
我还需要遵循以下几个方向:我还需要遵循以下几个方向: