Rails 3.1 Sweeper для метода контроллера в другом пространстве имен
Все,
Я пытаюсь добавить кеширование в мои приложения на Rails 3.1. Подметальная машина живет в пространстве имен по умолчанию, и у меня есть контроллер, который живет в пространстве имен администратора.
Например, у меня есть BooksController в пространстве имен Admin, и всякий раз, когда метод 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
1 ответ
Используйте косую черту перед именем контроллера. Срок действия истекает в пространстве имен по умолчанию:
expire_action(:controller => '/users', :action => 'index')
Для истечения срока действия в пространстве имен администратора:
expire_action(:controller => '/admin/users', :action => 'index')