【问题标题】:undefined method 'cache_sweeper'未定义的方法'cache_sweeper'
【发布时间】:2008-12-31 14:56:42
【问题描述】:

我正在尝试在我的网站上设置一些缓存,但无法让缓存清扫器正常工作。我关注了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>

让这个工作我缺少什么?

【问题讨论】:

    标签: ruby-on-rails caching


    【解决方案1】:

    我认为是因为

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

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

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

    【讨论】:

    • 是的——你在控制器中添加缓存清扫器,而不是模型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 2013-06-11
    • 2010-12-30
    • 2019-12-25
    • 2021-07-25
    相关资源
    最近更新 更多