2008-12-31 170 views
1

我試圖在我的網站上設置一些緩存,並且遇到了緩存清理工作的麻煩。我遵循Railscast,但是當我嘗試使用模型加載頁面時,出現錯誤。下面是我迄今所做:未定義的方法'cache_sweeper'

1)的添加應用程序/清掃目錄,並把基本的清掃它:

class TeamMemberSweeper < ActionController::Caching::Sweeper 
    observe TeamMember 

    def after_create(team_member) 
    expire_nav_menus 
    end 

    def after_destroy(team_member) 
    expire_nav_menus 
    end 

    private 

    def expire_nav_menus(athlete_id) 
    expire_fragment(...) 
    end 
end 

2)以下行添加到TeamMember型號:

cache_sweeper :team_member_sweeper, :only => [:create, :destroy] 

3)增加了以下行到config/environment.rb並重新啓動我的服務器:

config.load_paths += %W(#{RAILS_ROOT}/app/sweepers) 

此時,無論何時訪問TeamMember模型,我都會收到以下錯誤消息:

undefined method `cache_sweeper' for #<Class:0x23128cc> 

我錯過了什麼才能使其工作?

回答

4

我覺得因爲

「cache_sweeper:team_member_sweeper,:只=> [:創建:銷燬]」

如果您要在到期而不是模型的控制器去。

我遇到過類似的問題,因爲我特別想從模型中過期,但顯然這在Rails中不可能或很難做到。

+0

是的 - 你在控制器中添加緩存清掃器,而不是模型。 – zenazn 2008-12-31 18:06:10