【Rails】 備忘録:Deviseのモデル名を間違えて生成してしまったときの対処法


タイトルの通り、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 したら完了です。

何かおかしなところがあればご教授いただけると幸いです。

引用元:http://taremimi.hatenablog.jp/entry/2018/02/16/120343