2016-11-09 18 views
0

開発環境ではすべて正常に動作しますが、実稼働中(Herokuにデプロイされたとき)にMissingAttributeErrorがスローされます。ActiveModel :: MissingAttributeError(不明な属性の `order_id`を書くことはできません)

class Order < ApplicationRecord 
    has_many :cart_items, dependent: :destroy 
end 

class CartItem < ApplicationRecord 
    belongs_to :order, optional: true, foreign_key: "order_id" 
end 

create_table "cart_items", force: :cascade do |t| 
    t.integer "item_id" 
    t.integer "cart_id" 
    t.integer "user_id" 
    t.integer "order_id" 
end 
+1

Herokuで移行を実行しましたか?それは犯人かもしれないと思われる。 –

+0

@ニックネーム、しました。また、herokuのdbを再現しました。どちらもうまくいきませんでした。 –

+0

'git add?'と 'git commit -m 'はmigroを追加してherokuにプッシュし、' heroku run rake db:migrate'を実行するように移行しましたか? – DiegoSalazar

答えて

1

localhostを移行すると、スキーマはローカルのdb状態を反映して作成され、プロダクションから非同期になる可能性があります。おそらくあなたは移行の中で何かを変えたでしょうが、herokuはまだ古いバージョンから作業しています。 Herokuが移行を実行するかどうかは、移行の内容ではなくファイル名のタイムスタンプによって判断されます。

基本的には、配備されたアプリがある場合は、古い移行を変更しないでください。運用データベース内のすべてのデータが破壊されても構わない場合は、heroku pg:reset DATABASEを実行し、次にレーキdb:migrate againを実行してください。データを削除できない場合は、問題を解決する方法がまだあります。Rails rake db:migrate has no effect

関連する問題