在开发中运行,没有遇到以下错误。
向模型添加新属性后,在部署到登台服务器后,模型的页面正在生成
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
事实上,这些属性并没有出现在控制台查询中。
无法理解为什么它在开发而不是生产模式下工作。