rails NameError: uninitialized constant?? Devise入れたらおかしくなったときの対処法

deviseを入れてからおかしくなったので解決法。
このようなエラーが出る。

NameError: uninitialized constant User

rails c
rails s
もできなくなる??

routesの
devise_for :users
を削除するとサーバーが起動する。
原因は デバイスをインストールしていないのに

こちらがインストールコマンド rails g devise:install

デバイスでuserテーブルを作ってしまったようだ。

rails g devise user

これにより、ルーティングにはdeviseが記載され、おかしな挙動になりrailsコマンドが利用できなくなる。

対処法はこちらにあった

qiita.com

この記事ではより、初心者向けに理由を説明したい。

1-routes.rbにあるdevise_for :usersというコードを削除する

これがあるとルーティングがおかしくなるからか、railsコマンドが利用できない。
上記のNameError: uninitialized constant User のエラーが出る。

2-マイグレーションファイルをロールバックする。

Railsは、DBのバージョン管理がデフォルトで利用できる。それがマイグレーションファイル。 テーブルの操作をするときは、マイグレーションファイルを生成して、実行する。 このマイグレーションファイルのバージョンを持っているので、マイグレーションファイルをそのまま削除すると
厄介なことになる。 それで

rake db:rollback

でロールバックと言って、マイグレーションファイルのバージョンを戻す。 それから、userテーブルを作ったときの、マイグレーションファイルを削除する。

3-usrモデルを削除する

rails d model user

このuserモデルをdeviseをインストールしていないのにdeviseで生成したのがすべての間違いのはじまり。

よってここまで戻ってからdeviseをインストールする。

rails g devise:install

めでたし、めでたし