1

Railsの認証ソリューションとしてDeviseを使用しており、キャッシュされたフラグメント:recent_usersがあります。

新しいユーザーが登録、変更、または削除されたときにこのフラグメントを期限切れにしたいので、my(手動で作成した)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

私は何が間違っているのですか?

4

2 に答える 2

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の登録が別のコントローラーであるということでした。

于 2010-08-17T12:12:17.253 に答える
0

これをapplications_controller.rbに入れます

class ApplicationController < ActionController::Base
    cache_sweeper :user_sweeper, :only => [:create, :update, :destroy]
...
于 2011-04-08T14:24:59.673 に答える