💎
【Railsエラー忘備録】「DBのテーブルにそのカラム名ないよ」と言われた
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