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')
Другие вопросы по тегам