我刚刚成功部署并运行迁移。现在我看到了这个错误。
ActiveRecord::DangerousAttributeError (update is defined by Active Record):
app/controllers/project_updates_controller.rb:4:in `new'
我以前在Project_Updates中有一个名为" update"的属性,但是迁移将其重命名为" description"所以这不应该是一个问题。为了确保迁移实际上重命名了列,我试图创建一个新的ProjectUpdate:
irb(main):001:0> @projectUpdate = ProjectUpdate.new
=> #<ProjectUpdate id: nil, description: nil, project_id: nil, created_at: nil, updated_at: nil, deleted_at: nil, featured_image_id: nil, title: nil>
正如您所看到的,没有&#34;更新&#34;方法,但有一个&#34;描述&#34;方法,所以它确实重命名。
为什么我仍然会收到此危险属性错误?附:这只是在生产,而不是开发。
解决
看起来我的db / schema可能不正确。我从heroku中删除,删除了我的方案,运行db:migrate,然后推送,这就解决了问题。
答案 0 :(得分:1)
错误主要是由update
作为预定义的ActiveRecord
方法引起的。这基本上意味着如果你拨打@x.update
,这是一个预先定义的方法&amp;会抛出错误。 DangerousAttributeError
中描述了db
,因此:
当属性具有Active Record保留的名称时引发(何时 attribute具有Active Record实例方法之一的名称。)
-
<强>修正强>
您已通过迁移修复了project_updates_controller
,但是,update
似乎仍在某处引用line 4
“属性。它提到它位于new
(description
行动中)
要解决此问题,您应该将操作更改为引用update
而不是{{1}}