5

Railsアプリにdeviseの新規インストールを追加しましたが、サーバーの起動時に警告が出力され、deviseがまったく機能しません:

   [WARNING] You provided devise_for :users but there is no model User defined in your application

私は 100% ユーザーというモデルを持っています。

私はこの問題で他の人を見てきました ( Heroku [警告] あなたは devise_for :users を提供しましたが、アプリケーションで定義されたモデル User はありません)、「:database_authenticable」の名前を変更しました。これは修正されませんでした。

また、devise イニシャライザはアクティブ レコードに設定されています。これは、このエラー ('devise/orm/active_record' が必要) を持つ別のバグですが、これも修正されませんでした。

他の誰かがこのエラーを抱えていますか、それとも追跡して詳細を取得する方法はありますか? ありがとう。

4

4 に答える 4

1

ルートに devise_for :users がある場合、ユーザーモデル(単数)をターゲットにすると思います。あなたのモデルの名前はユーザーであると言いましたが、それが機能しない可能性があります。

于 2013-11-15T04:08:12.160 に答える
1

モデルがapp/models/user.rbではなくusers.rbにあることを確認し、実行ruby -c app/models/user.rbして構文チェックを行います。

User が存在し、構文エラーがない場合、存在しないものを含めようとしているため、ロードに失敗している可能性があります。クラスの本体をコメントアウトして、Devise で実行できるかどうかを確認しますrails console

于 2013-11-16T21:46:43.730 に答える
0
rails generate devise User

上記のコードをTerminalコンソールで実行すると、ユーザーモデルが生成されます。

于 2013-11-18T10:53:32.950 に答える
0

型式命名規則

Table: users
Class: User
File: /app/models/user.rb
Primary Key: id
Foreign Key: user_id

コントローラの命名規則

Class: UsersController
File: /app/controllers/users_controller.rb
Layout: /app/layouts/users.html.erb

命名規則を表示

Helper: /app/helpers/users_helper.rb
Helper Module: UsersHelper
Views: /app/views/users/… (list.html.erb for example)

テストの命名規則

Unit: /test/unit/user_test.rb
Functional: /test/functional/users_controller_test.rb
Fixtures: /test/fixtures/users.yml

規則:モデル モデルは、壊れていない MixedCase のクラス命名規則を使用して命名され、常にテーブル名の単数形です。たとえば、テーブル名がユーザーの場合、モデル名はユーザーになります。Rails は、/app/models ディレクトリにある user.rb というファイルでクラス定義を探します。モデル クラス名に複数の大文字の単語が含まれる場合、テーブル名はこれらの単語の間にアンダースコアがあると見なされます。

ノート:

so if we say devise_for: users,
we must have a model with name User(user.rb)
于 2013-11-18T12:16:34.223 に答える