0

私はこの問題に何時間も取り組んできましたが、StackOverflow でこれとまったく同じものを見つけたようには見えません。

   C:\Sites\isawyou>rake db:migrate
    rake aborted!
    User does not respond to 'devise' method. This usually means you haven't loaded
    your ORM file or it's being loaded too late. To fix it, be sure to require 'devi
    se/orm/YOUR_ORM' inside 'config/initializers/devise.rb' or before your applicati
    on definition in 'config/application.rb'
    C:/Sites/isawyou/config/routes.rb:2:in `block in <top (required)>'
    C:/Sites/isawyou/config/routes.rb:1:in `<top (required)>'
    C:2:in `rescue in execute_if_updated'
    C:in `execute_if_updated'
    C:/Sites/isawyou/config/environment.rb:5:in `<top (required)>'
    Tasks: TOP => db:migrate => environment
    (See full trace by running task with --trace)

問題: 移行しようとするたびに、このエラーが発生します。ただし、devise.rbファイルがインストールされていないため、これを修正する方法がわかりません..

解決の試み:この回答を試してみましたが、必要な正しいレーキ ルートを設定できませんでした (つまり、新しいユーザー セッション、新しいユーザーの作成など)。

コマンドの順序をやり直そうとしました(以下に示すように)..しかし、それも機能しませんでした..私はいつも「rake db:migrate」部分で立ち往生しています..

$ rails d devise User
$ rails generate devise:install (you may have to override previous files)
$ rails generate devise User
$ rake db:drop
$ rake db:create
$ rake db:migrate
$ rake routes 

正解がわかったらよろしくお願いします!!

4

1 に答える 1

3

以前にデバイスジェネレーターを実行できなかったようです。バックトレースは、config/routes.rb の 2 行目でエラーが発生したことを示しています。次のコード行があり、デバイス ルートを設定していると思います。

devise_for :users

しかし、ユーザー モデルにはデバイス モジュールのセットアップがありません。次のようなものがあるはずです

# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :timeoutable  and :omniauthable
devise :database_authenticatable, :rememberable, :trackable, :validatable

この行が存在する場合、デバイスが正しくインストールされていないことを意味します。

また、ActiveSupport::Dependencies オートローダー パス内に別のクラスまたはモジュール「ユーザー」があり、devise_for :users 行がユーザー クラスを必要とする場合、このクラス/モジュールが最初にロードされますが、実際のユーザー モジュールはロードされません。「無効な」ユーザー モジュール/クラスは ActiveRecord の子孫ではないため、devise AR フックがインストールされていないため、#devise メソッドがありません。したがって、User という名前の他のクラス/モジュールがないことを確認してください。

于 2013-08-01T12:13:56.460 に答える