Rails 3作用域发现给出了ActiveRecord :: ReadOnlyRecord

Pet*_*own 17 activerecord ruby-on-rails ruby-on-rails-3

我正在将Rails应用程序从2.3.10升级到3.0.4,并且在我的控制器中更新模型时遇到了问题.我一直在"查找"模型查找,以防止用户更新不属于它们的对象.它在2.3中按预期工作,但我在Rails 3中使用update_attributes得到一个ActiveRecord :: ReadOnlyRecord错误.

在Rails 3中执行此操作的正确方法是什么?

项目管理员:

def update
  @project = current_user.projects.find(params[:id])

  if @project.update_attributes(params[:project])
    # saved
  else
    # not saved
  end
end
Run Code Online (Sandbox Code Playgroud)

Pet*_*own 42

事实证明,它与使用范围来模拟活动记录关联有关.我能够通过添加.readonly(false)到我的范围来修复它.