未定义的方法'cache_sweeper'

时间:2008-12-31 14:56:42

标签: ruby-on-rails caching

我正在尝试在我的网站上设置一些缓存,并且遇到缓存清理工作的麻烦。我跟着Railscast但是当我尝试使用模型加载页面时,我收到了一个错误。这是我到目前为止所做的:

1。)添加了app / sweepers目录并在其中放入一个基本的清扫器:

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>

我缺少什么让这个工作?

1 个答案:

答案 0 :(得分:4)

我认为因为

“cache_sweeper:team_member_sweeper,:only =&gt; [:create,:destroy]”

应该进入您想要过期的控制器,而不是模型。

我遇到了类似的问题,因为我特意想要从模型中过期,但显然在Rails中这是不可能或者很难做到的。