Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails+;中的默认方法无法使缓存片段过期;设计_Ruby On Rails_Caching_Devise_Fragment Caching - Fatal编程技术网

Ruby on rails RubyonRails+;中的默认方法无法使缓存片段过期;设计

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

我在Rails中使用Desive作为身份验证解决方案,我有一个缓存片段:最近的用户

我希望这个片段在新用户注册、更改或删除时过期,因此我将我的(手动创建的)users_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 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[:创建,:更新,:销毁]
...

我还需要遵循以下几个方向:我还需要遵循以下几个方向: