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



我试图在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 

下面是sweeper的代码:

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])从控制器更新任何东西时,它给出了一个错误ActiveRecord::StatementInvalid (RuntimeError: can't modify frozen object:

我错过了什么吗?

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

接下来是Nazar Hussain的回答。通过添加?pp=disable到你的网站URL的末尾,这将禁用miniprofiler,这可以让你测试是否是miniprofiler导致的问题

相关内容

  • 没有找到相关文章

最新更新