rails g migration XXX
などをタイポして、実行してしまった時にどうすれば良いのか調べました。
今回は、
rails g migraiton add_name_to_user name:string
を
rails g migraiton add_name_to_users name:string
のように、userをusersとしてしまいました。
db:migrate実行前
今回は、db:migrate実行前だったので、以下のコードを実行しました。データベースへの反映段階によって対処法が異なっているようです。
rails db:migrate:status
すると、upとdownが出てきました。
Status Migration ID Migration Name
--------------------------------------------------
up 20220403064432 Devise create users
down 20220403131323 Add name to users
down => db:migrate実行前
up => db:migrate実行後
db:migrate実行前だったので、単純にmigrationファイルをrmコマンドで削除すれば問題ありませんでした。
一方で、db:migrateを実行している場合は、
db:migrate実行直後
1つ前の状態に戻すコマンドである、
rails db:rollback
を実行すれば、先ほど確認したStatusがdownになるので、そのファイルを削除すれば大丈夫です。
db:migrate実行直後ではない
この場合はdownにしたいIDを指定すればオッケーです。
rails db:migrate:down VERSION=Migration ID
Migration IDは先ほど以下のコードで確認したら分かりますね。
rails db:migrate:status
migrationファイルの扱いは気をつけなければエラーを起こしやすいので、慎重にしましょう。