1

全て、

Rails 3.1 アプリにキャッシングを追加しようとしています。スイーパーはデフォルトの名前空間に存在し、管理者の名前空間に存在するコントローラーがあります。

たとえば、Admin 名前空間に BooksController があり、このコントローラの share メソッドが実行されるたびに、ブック キャッシュをスイープしたいと考えています。このメソッドに after_books_share という名前を付けようとしましたが、メソッドが呼び出されません。

class Admin::BooksController < ApplicationController
caches_action :show
cache_sweeper :book_sweeper
   def share
   # "Share" a book
   end
end


class BookSweeper < ActionController::Caching::Sweeper
observe Book
def after_update(book)
   expire_cache_for(book)
end
def after_books_share
  book = Book.find params[:id]
  expire_cache_for(book)
end
def expire_cache_for(book)
   expire_action(:controller => '/books', :action => 'show', :id => book)
end
end
4

1 に答える 1

1

コントローラー名の前にスラッシュを使用します。デフォルトの名前空間で期限切れにするには:

expire_action(:controller => '/users', :action => 'index')

admin 名前空間で期限切れにするには:

expire_action(:controller => '/admin/users', :action => 'index')
于 2012-05-29T22:22:42.167 に答える