エラー解決‼️ ActiveModel::UnknownAttributeError

今回の記事は、自分でWebアプリケーションを作成していて、本番環境でエラーが発生しました。
その解決、解決までの仮定を備忘録として書かせていただきます。

エラー発生時の状況

開発言語:Ruby
DB:My SQL
サーバー:Heroku

作成したWebアプリケーションの入力フォームに必要事項を入力し、内容を保存する為に画面上の「設定」ボタンをクリック。
画面が遷移したら、下記のエラー表示画面が発生。

Image from Gyazo

ターミナルからログを確認すると、

ActiveModel::UnknownAttributeError (unknown attribute 'comment' for Training.):

→Trainingモデルには、commentカラムはないよ

解決までの過程

原因の仮説

本番環境でのデータベースにcommentカラムがないため、保存ができず、エラーが発生してしまったのではないか?
アプリを作成している段階で、マイグレーションファイルのカラム名を変更をしているため、それが反映されていなかったと考えられる。

対応の仮説

最新のローカル環境でのデータベースの内容を本番環境でも反映させることにより、エラーが解決するのではないかと考えました。

実施内容

①Heroku上のデータベースの内容確認。
これは、以前の記事にも書いたの割愛させていただきます。

②ローカルのデータベースの内容をHerokuのデータベースにも反映させる。
〜手順〜 1:heroku上のマイグレーションファイルの状態を確認する。

Heroku run rails db:migrate:status

2:修正したいheroku上のマイグレーションファイルを”down”状態にする。

Heroku run rails db:migrate:rollback STEP=2

*今回は、2つマイグレーションファイルを修正したかったので、2つ前までのマイグレーションファイルをdown状態にするために"STEP=2"とさせていただきました。

3:マイグレーションファイルを修正し、Git Hubデスクトップでリモート側へプッシュする。 *今回の場合、ローカル環境では、修正済みであり、本番環境への反映だけがされていなかったので、割愛させていただきます。

4:herokuでマイグレーションを実行する。

Heroku run rails db:migrate:status

これにより、本番環境のマイグレーションファイルも更新されます。

5:マイグレーションファイルが"up"状態となっていることを確認する。 1:同様に下記のコマンドで確認する。

Heroku run rails db:migrate:status

6:Herokuをリセットする。

Heroku  reset

このコマンドを実行することにより、Heroku上のデータが一度リセットされ、マイグレーションファイルも反映され、無事エラー解決することができました!

まとめ

・ログからエラー内容を確認する。
・Heroku上のデータベースの内容確認。
・修正したいheroku上のマイグレーションファイルを”down”状態にする。
マイグレーションファイルを修正し、Git Hubデスクトップでリモート側へプッシュする。
・herokuでマイグレーションを実行する。
・Herokuをリセットする。