LoginSignup
0
0

More than 1 year has passed since last update.

Herokuへseedデータを流したら詰まった

Posted at

概要

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が通りました。

でもこれだとアプリをアップデートしてカラムを増やしたときにまた同じことが起こる。
それまでに登録していたユーザーが消えてしまう。。
他にも良い方法があればコメントで教えてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0