我刚刚为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'),但这并没有解决它。
是否有其他人有此错误,或者有没有办法可以追踪它以获取更多详细信息?感谢。
答案 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)