Heroku说属性存在并不存在

时间:2014-05-29 08:26:17

标签: ruby-on-rails activerecord heroku

我刚刚成功部署并运行迁移。现在我看到了这个错误。

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,然后推送,这就解决了问题。

1 个答案:

答案 0 :(得分:1)

错误主要是由update作为预定义的ActiveRecord方法引起的。这基本上意味着如果你拨打@x.update,这是一个预先定义的方法&amp;会抛出错误。 DangerousAttributeError中描述了db,因此:

  

当属性具有Active Record保留的名称时引发(何时   attribute具有Active Record实例方法之一的名称。)

-

<强>修正

您已通过迁移修复了project_updates_controller,但是,update似乎仍在某处引用line 4“属性。它提到它位于newdescription行动中)

要解决此问题,您应该将操作更改为引用update而不是{{1}}