#はじめに
deviseを介してuserモデルを作る時に、「undefined method `devise'」というエラーが出て作成ができませんでした。ちょっとした記述ミスだったのですが、焦ったので備忘録としてまとめておきます。
#原因
deviseは導入したはずだったのですが、遡ってみると
% bundle install
% rails d devise install
% rails g devise user
よくみてみると、「rails d devise install」という記述に「:」がない事に気がつきました。本来は「rails d devise:install」です。したがって今回の原因は「:」が抜けている事でした。。
しかし、問題は中途半端に処理は実行されていて、deviseのマイグレーションファイルは出来上がってしまっている事です。bundle install直後に戻さないといけません。
#対処法
対処法としては以下の3つの手順を行いました。
①routes.rbに作られた、 「devise_for :installs」 という記述を削除する。
これを削除しないと次の手順のrailsコマンドが使えません。
(※ 「:installs」という記述は謎だが、中途半端なdeviseを介してuserモデルを作ると出現した・・)
②rails db rollbackコマンドを実行。→devise作成時のマイグレーションファイルを削除する。
③rails destroy devise:installコマンドを実行。→devise関連のconfigファイルの削除
ここまでやってもう一度、「:」をしっかりと入れて、「rails g devise:install」で無事にdeviseの再導入できました。よかった。
#まとめ
結局は「:」のうち忘れという事で単純な事でしたが、焦りました。model関連の導入は落ち着いてやろうと思います。
以上この記事が少しでも誰かのお役に立てれば幸いです。