Rails 3.1 Sweeper用于不同命名空间中的控制器方法

时间:2012-05-29 04:34:41

标签: ruby-on-rails caching namespaces sweeper

所有

我正在尝试将缓存添加到我的Rails 3.1应用程序中。清扫器位于默认命名空间中,我有控制器,它位于Admin命名空间中。

例如,我在Admin命名空间中有BooksController,并且每当此控制器中的共享方法我想要书籍缓存被清空时。我试图将此方法命名为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 个答案:

答案 0 :(得分:1)

在控制器名称前面使用斜杠。要在默认命名空间中过期:

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

在admin命名空间中过期:

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