💎

【Railsエラー忘備録】「DBのテーブルにそのカラム名ないよ」と言われた

2024/05/31に公開

Ruby on Railsで簡易SNSアプリを作っていた時のことです。DBではMySQLとsequel Proを使用していました。sequel Proとは、データベースの情報をExcelのような表形式で確認したり、編集をしたりすることができるアプリです。

新規会員登録画面にて自分のデータを入力したところ、エラーが出てきました。

エラー文

ActiveModel::UnknownAttributeError in Devise::RegistrationsController#create
unknown attribute 'nickname' for User.

翻訳すると、**「Userテーブルにnicknameカラムがないよ」**という意味でした。

Sequel Proを確認

Sequel Proでuserテーブルのカラムを確認すると、確かにnicknameというカラムは存在せず、niknameカラムが存在しました。スペルミス!!!

マイグレーションファイルを確認

マイグレーションファイルも同様でした。nicknameではなくniknameと記述が。。。

実現したいこと

  • Userテーブルに間違って追加されたniknameカラムを削除したい
  • その後、Userテーブルにnicknameカラムを追加したい

解決手順

1, 該当するマイグレーションファイルの削除・修正

まず、誤ったカラムを削除するマイグレーションを作成。

rails generate migration RemoveNiknameFromUsers nikname:string

これでniknameカラムを削除。併せて、ローカルのマイグレーションファイルも削除。

2, マイグレーションファイルの再追加(生成)

次に、正しいカラムを追加するマイグレーションを作成。

rails generate migration AddNiknameToUsers nickname:string

3, マイグレーション実行

最後に、マイグレーションを実行してデータベースに変更を反映させます。

rails db:migrate

これでマイグレーションが実行され、DBにカラムが追加されました。

Discussion