【发布时间】:2014-07-21 18:44:03
【问题描述】:
在开发中运行,没有遇到如下错误。
为模型添加了新属性后,在部署到登台服务器后,模型的页面正在生成
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=生产包 exec rails c
那么事实上,这些属性并没有出现在控制台查询中。
无法理解为什么它在开发模式下而不是在生产模式下工作。
【问题讨论】:
标签: ruby-on-rails-3.2 postgresql-9.3 dev-to-production