5

我刚刚向 rails 应用程序添加了全新安装的设计,但它在启动服务器启动时输出警告,并且设计根本无法正常工作:

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

我 100% 确实有一个称为用户的模型。

我已经看过其他有这个问题的人了(Heroku [警告] 你提供了 devise_for :users 但在你的应用程序中没有定义模型用户)并且我已经更改了 ':database_authenticable' 的名称。这并没有解决它。

此外,设计初始化程序设置为活动记录,这是另一个存在此错误的错误(需要“设计/orm/活动记录”),但这也没有修复它。

有没有其他人有这个错误,或者有没有办法可以追踪它以获得更多细节?谢谢。

4

4 回答 4

1

检查模型是否在 中app/models/user.rbusers.rb然后运行ruby -c app/models/user.rb以进行语法检查。

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

于 2013-11-16T21:46:43.730 回答
1

我认为,如果您的路线中有 devise_for :users ,它将针对您的用户模型(单数)。您说您的模型的名称是用户,这可能使其无法正常工作。

于 2013-11-15T04:08:12.160 回答
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 回答
0
rails generate devise User

运行上面的代码Terminal,我的意思是在控制台中,这样就会为你生成用户模型。

于 2013-11-18T10:53:32.950 回答