片段缓存无法修改冻结对象错误轨道3

时间:2013-01-15 21:52:37

标签: ruby-on-rails ruby-on-rails-3 caching dalli

我正在尝试在Rails 3.0.19应用程序中实现片段缓存,并将dalli用作缓存存储。这是我的缓存片段脚本:

- @presentations.each do |p|
  - cache "presentation", p do
    = render_presentation_object p

render_presetnation_object实际上根据某些条件呈现出特定的部分。我还在控制器中添加了扫地机。

cache_sweeper :presentation_sweeper, :only => [:create, :update, :destroy]
caches_action :update 

以下是清扫员的代码:

class PresentationSweeper < ActionController::Caching::Sweeper
  observe Presentation

  def after_save(presentation)
    expire_cache(presentation)
  end

  def after_update(presentation)
    expire_cache(presentation)
  end

  def after_destroy(presentation)
    expire_cache(presentation)
  end

  def expire_cache(presentation)
    expire_fragment "presentation", presentation
  end
end

当我尝试使用此代码@presentation.update_attributes(params[:presentation])从控制器更新任何内容时,它会出错[{1}}

我错过了什么?

2 个答案:

答案 0 :(得分:7)

宝石 rack-mini-profiler http://miniprofiler.com/正在对AR进行一些运行时更改,这导致了问题。删除那个宝石解决了这个问题,现在一切都很好。

答案 1 :(得分:0)

继Nazar Hussain的回答。通过在您的网站URL末尾添加?pp = disable,这将禁用miniprofiler,这可能允许您测试它是Miniprofiler导致问题