スクール受講開始から2週目に突入しました。
Ruby on Railsの基礎的なところを学んでいる段階です。
ターミナルから以下のコマンドで、データベースのテーブルにカラムを追加する方法を学び、自分のテスト環境で試した際に、タイプミスがありエラーが発生してしまいました。
# 既存のDBテーブルにカラム追加
$ rails g migration Addカラム名To追加先テーブル名 追加するカラム名:型
# 実際に実行したコマンド(誤り)
$ rails g migration AddNicknametoUsers nickname:string
# 正しくはこちら
$ rails g migration AddNicknameToUsers nickname:string
テーブルのカラムを確認すると、当然追加されていませんが、エラーも特に出ていなかったので、最初は原因がわからず生成されたmigrationファイルを確認し、Toがtoになってしまっていることが判明。
rails db:rollbackでロールバックさせ、ファイルの中身を修正し、再度rails db:migrateしてみましたが、今度は以下のエラーが発生してしまう。
bin/rails aborted!
NameError: uninitialized constant AddNicknametoUsers (NameError)
Object.const_get(camel_cased_word)
^^^^^^^^^^
Did you mean? AddNicknameToUsers
Caused by:
NameError: uninitialized constant AddNicknametoUsers (NameError)
Object.const_get(camel_cased_word)
^^^^^^^^^^
Did you mean? AddNicknameToUsers
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
修正したはずが・・・と思い、再度眺めていたところ、ファイル名が'20250514090656_add_nicknameto_users.rb'となっているのに気が付き、こちらも修正してみました。
残念ながらエラーは解消されませんでした。
次に試したのはロールバックして、該当のmigrationファイル削除して、やり直せばいいのでは?と思い立ち、やってみました。
$ rails db:migrate:status
Status Migration ID Migration Name
--------------------------------------------------
up 20250513091538 Create tweets
up 20250514080656 Devise create users
down 20250514090656 Add nickname to users
$ rm db/migrate/20250514090656_add_nickname_to_users.rb
$ rails db:migrate:status
database: pictweet_development
Status Migration ID Migration Name
--------------------------------------------------
up 20250513091538 Create tweets
up 20250514080656 Devise create users
無事に消えました!
そして再度今度はタイプミスしないように気をつけて実行
$ rails g migration AddNicknameToUsers nickname:string
サーバーを立ち上げ、テーブルの中身にnicknameが無事追加されていることが確認できました!