タイトルの通り、Rails Deviseのモデル名を間違えて生成してしまったときの対処法をメモします。
$rails generate devise MODEL #任意のモデル名
このモデル名を間違えて生成してしまいました。
結果、以下のように複数ファイルが、間違えたモデル名で生成されました。
Running via Spring preloader in process 12067
invoke active_record
create db/migrate/20201204011415_devise_create_models.rb
create app/models/model.rb
invoke test_unit
create test/models/model_test.rb
create test/fixtures/models.yml
insert app/models/model.rb
route devise_for :models
ではこれを削除するにはどうするかというと
$rails destroy devise MODEL #任意のモデル名
先ほどのgenerateの部分をdestroyにすればいいだけです。
これで先ほど尽かされたファイルや追記されたコードが削除されます。
ターミナルの結果にて確認できます↓
Running via Spring preloader in process 12224
invoke active_record
remove db/migrate/20201204011415_devise_create_models.rb
remove app/models/model.rb
invoke test_unit
remove test/models/model_test.rb
remove test/fixtures/models.yml
route devise_for :models
もし、$rails db:migrate
コマンドでデータベースを反映させてしまった場合はrollbackを実行して、データベースを元に戻してください。
と、その前にまずはどこまでmigrateされているか現在の状況を把握するところから始めます。
(現在の状況を知らずにとにかくrollbackを行うと、何をrollbackしてしまったのかわからなくなるからです。特にチームでやる場合は必須。)←だそうです(実務未経験です)
このコマンドで確認します。
$rails db:version
Current version: 20201129095028
20201129095028(migrateした最新の日付)までmigrateされていることが確認できます。db/migrateのファイルを確認しながらやっていきましょう。
それでrollbackしても問題なければ、以下を実行します。
$ rails db:rollback
ファイルが複数ある場合は $rails db:rollback STEP=3すればいいので
例えば3つあるとして、全てrollbackしたい場合は
$rails db:migrate STEP=3
と実行すればよかったですね。
もう一度同じ手順で、正しいモデル名でモデルを生成し、$rails db:migrate したら完了です。
何かおかしなところがあればご教授いただけると幸いです。