我正在尝试在我的网站上设置一些缓存,并且遇到缓存清理工作的麻烦。我跟着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>
我缺少什么让这个工作?
答案 0 :(得分:4)
我认为因为
“cache_sweeper:team_member_sweeper,:only =&gt; [:create,:destroy]”
应该进入您想要过期的控制器,而不是模型。
我遇到了类似的问题,因为我特意想要从模型中过期,但显然在Rails中这是不可能或者很难做到的。