#概要
heroku run rails db:seedを実行したらエラーが起きた。
#結論
古い本番環境のデータが残っていたのが原因。
##それまでの過程
➀Herokuへログイン
$ heroku login --interactive
➁Herokuへデプロイして、本番環境でのマイグレーションファイルを生成
$ git push heroku master
$ heroku run rails db:migrate
➂初期データ(seed)を流し込む
$ heroku run rails :seed
##はい、ここで詰まります。
ActiveModel::UnknownAttributeError: unknown attribute 'user_area' for User.
Userテーブルにuser_areaのカラムがないんだと。
ここでschema.rbを確認。すると…
create_table "users", force: :cascade do |t|
t.string "name"
t.string "email"
t.integer "user_area"
t.integer "user_job"
t.integer "school_year"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.string "password_digest"
t.string "remember_digest"
t.boolean "admin", default: false
t.string "activation_digest"
t.boolean "activated", default: false
t.datetime "activated_at"
t.string "avatar"
t.string "reset_digest"
t.datetime "reset_sent_at"
t.string "profile"
t.index ["email"], name: "index_users_on_email", unique: true
end
はあ?あるやん!
じゃあ今の本番環境のUserテーブルどうなってんの?
ってことで
heroku run rails c
すると、Railsチュートリアルを走らせていた時の古いデータが。。
そこにはuser_areaのカラムがない。
なので、$ heroku run rails db:resetを実行。
データをすっきりさせてからもう一度$ heroku run rails db:seedを実行。
そしたらseedが通りました。
でもこれだとアプリをアップデートしてカラムを増やしたときにまた同じことが起こる。
それまでに登録していたユーザーが消えてしまう。。
他にも良い方法があればコメントで教えてください。