Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

gemのdeviseをインストールした直後のエラー

More than 3 years have passed since last update.

deviseをインストールして作業していたところ

'method_missing': undefined method 'devise' for User (call 'User.connection' to establish a connection):Class (NoMethodError)

というエラーが出て、rails srake ~~~というコマンドが使用できなくなりました。
このときGemfileにはgem 'devise'と記述し、ターミナルでは以下のような履歴になっていました。

#ターミナル履歴
bundle install
rails g devise user
rake db:migrate

・・・あっ、rails g devise:installをしていない!

rails g devise installをしていないとrails srake ~~~devise ~~~などのコマンドが競合してしまい、すべてのコマンドが使用できなくなってしまうようです。
このエラーに対処するためにdeviseをbundle installの直後まで設定を戻してからもう一度deviseをインストールしました。

対処法

  1. routes.rbにあるdevise_for :usersというコードを削除する(これでrailsコマンドが使えるようになります!)
  2. rake db:rollbackでマイグレーションファイルをロールバックする。(これをすることによって先ほど作ったuserテーブルのマイグレーションファイルをなかったことにしましょう。)
  3. userテーブルを作ったときのマイグレーションファイルを削除する。
  4. rails d model userを行いuserモデルを削除する。

これらの作業でdeviseをインストールする前の状態に戻ることができました。
以上の作業が終わったら、rails g devise:installからコマンドを実行していけば正常に動くようになります。

ryouzi
都内のIT企業で働いています。Ruby on Rails, AWSなどが少しわかります。とあるベンチャー企業でチーム開発責任者、サイト運営責任者などやっていました。フットサルと釣りとビールが趣味。
http://ryouzis.hatenablog.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away