エラーの内容・原因・対処方法をまとめました。
##作業内容
gem 'devise'を追加して、rails g devise userのコマンドでuserモデルを作成していたところ、rake db:migrateでエラーになった。
##エラーの内容
`method_missing': undefined method `devise' for User (call 'User.connection' to establish a connection):Class (NoMethodError)
「Userモデルに対するdeviseメソッドなんて無いよ!」という感じですね。
##原因
どうやら、rails g devise install をする前に、rails g devise user をしてしまっていたようでした。
正しい作業手順:
- gem 'devise'を追加
- bundle install
- rails s でローカルサーバー再起動
- rails g devise:install ←ここができていなかった。
- rails g devise user
- rake db:migrate
##対処方法
まず、下記の手順で作業手順4.の直前の状態に戻した後、再度正しくdeviseをインストールしました。
- routes.rb から devise_for :users の記述を削除(作業手順5.で記述されたもの)
- rails d model user を行い、userモデルを削除(これも作業手順5.で作成されたもの)
- rails g devise:install
以降、正しくコマンドを実行
##うまくいきました!