0

在开发中运行,没有遇到以下错误。

向模型添加新属性后,在部署到登台服务器后,模型的页面正在生成

ActionView::Template::Error (undefined method `[...]' for #<Optionrate:)x)))... 

它引用了当前 schema.rb 文件中存在的属性,并且恰好在 attr_accessible 中列出。在对属性的 _form 调用和通过 if 子句调用属性(作为布尔值)的视图中都会引发错误,例如:

<% if @optionrate.auto_price %>

我什至可以通过控制台获取新属性

Optionrate.all.each { |n| n.update_attribute(:auto_price, true)}

有许多具有相同前缀的布尔值,或者属性名称中可能有两个下划线,我更改了名称,重新运行所有内容并获得相同的行为!

更新了两个模型后,另一个模型会生成相同的未定义方法错误。因此,错误显然是由于结构变化而发生的。

迁移所遵循的步骤是:

pg_dump the existing DB
rake db:migrate VERSION=0
deploy changes
rake db:migrate
psql load existing data

**更新**
原来环境有所不同。首先,我在花园小路上;需要调用生产环境的控制台 RAILS_ENV=production bundle exec rails c

事实上,这些属性并没有出现在控制台查询中。

无法理解为什么它在开发而不是生产模式下工作。

4

1 回答 1

0

如果有人遇到这个问题...

控制台 rake 命令不一定知道要在其上执行的环境。因此,我实际上并没有修改生产数据(作为一个大文件,我没有阅读所有的 postgresql 消息......

pg_dump the existing DB
RAILS_ENV=production bundle exec rake db:migrate VERSION=0
deploy changes
RAILS_ENV=production bundle exec rake db:migrate
psql load existing data

指定环境...

于 2014-07-21T10:44:03.657 回答