0

開発中の実行では、次のエラーは発生しません。

モデルに新しい属性を追加した後、ステージング サーバーにデプロイすると、モデルのページが生成されます。

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

現在の schema.rb ファイルに存在し、たまたま attr_accessible 内にリストされている属性を参照します。このエラーは、attribute への _form 呼び出しと、ブール値である属性が次のような if 句を介して呼び出されるビューの両方で発生します。

<% if @optionrate.auto_price %>

コンソールから新しい属性を取得することもできます

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

属性の名前に同じプレフィックス、またはおそらく 2 つのアンダースコアが付いたブール値が多数あるため、名前を変更し、すべてを再実行したところ、同じ動作が得られました。

2 つのモデルを更新すると、もう一方のモデルが同じ未定義メソッド エラーを生成します。このように、構造変化のために明らかにエラーが発生しています。

移行の手順は次のとおりです。

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