由于此警告而设计不起作用:[警告]您提供了devise_for:users但您的应用程序中没有用户定义的模型

时间:2013-11-08 12:12:00

标签: ruby-on-rails ruby-on-rails-3 authentication devise

我刚刚为rails应用程序添加了一个全新的设计安装程序,但它在启动服务器启动时输出了一个警告并且设计根本不起作用:

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

我100%拥有一个名为users的模型。

我已经看过其他有这个问题的人有这个问题(Heroku [WARNING] You provided devise_for :users but there is no model User defined in your application),我改名为':database_authenticable'。这没有解决它。

此外,设计初始化程序也设置为活动记录,这是另一个出现此错误的错误(需要'devise / orm / active_record'),但这并没有解决它。

是否有其他人有此错误,或者有没有办法可以追踪它以获取更多详细信息?感谢。

4 个答案:

答案 0 :(得分:1)

我认为如果您的路线中有devise_for:用户,则会定位您的用户模型(单数)。你说你的模型的名字是用户,这可能使它不起作用。

答案 1 :(得分:1)

检查模型是app/models/user.rb,而不是users.rb,然后运行ruby -c app/models/user.rb进行语法检查。

如果用户存在且没有语法错误,则可能无法加载,因为它试图包含不存在的内容。注释掉课程的正文,看看Devise是否允许你现在运行rails console

答案 2 :(得分:0)

rails generate devise User

Terminal中运行上面的代码,我的意思是在控制台中,然后将为您生成用户模型。

答案 3 :(得分: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的类命名约定命名,并且始终是表名的单数,例如表名可能是用户,型号名称是User。然后,Rails将在/ app / models目录中名为user.rb的文件中查找类定义。如果模型类名称具有多个大写单词,则假定表名在这些单词之间具有下划线。

注意:

so if we say devise_for: users,
we must have a model with name User(user.rb)