1
모두Rails 3.1 다른 네임 스페이스의 컨트롤러 메소드 스위프
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
로저, 미안 해요 실제로 사용자의 앞에 /가 않았다. 따라서 모델이 업데이트되면 캐시가 실제로 만료됩니다. 그러나 콜백 after_books_share는 책/공유가 실행될 때 호출되지 않습니다. 네임 스페이스가있을 때 명명 규칙이 약간 다를 수 있습니다. – akoesnan