Ruby on rails 设计:尝试创建没有ID的记录

Ruby on rails 设计:尝试创建没有ID的记录,ruby-on-rails,ruby,sqlite,devise,Ruby On Rails,Ruby,Sqlite,Devise,我是Rails新手,我正在尝试使用Desive为身份验证部分创建一个应用程序。我注意到的第一件事是我的测试失败了,因为我的用户没有ID,所以我把它放在我的User模型上 self.primary_key = :id 这有助于我的测试运行,但现在我陷入了另一个问题。每次我尝试添加用户时,Desive controller都会失败,并显示以下消息: ActiveRecord::StatementInvalid in Devise::RegistrationsController#create S

我是Rails新手,我正在尝试使用Desive为身份验证部分创建一个应用程序。我注意到的第一件事是我的测试失败了,因为我的用户没有ID,所以我把它放在我的
User
模型上

self.primary_key = :id
这有助于我的测试运行,但现在我陷入了另一个问题。每次我尝试添加用户时,Desive controller都会失败,并显示以下消息:

ActiveRecord::StatementInvalid in Devise::RegistrationsController#create

SQLite3::ConstraintException: users.id may not be NULL: INSERT INTO "users" ("active", "created_at", "current_sign_in_at", "current_sign_in_ip", "default_business_id", "email", "encrypted_password", "first_name", "last_name", "last_sign_in_at", "last_sign_in_ip", "remember_created_at", "reset_password_sent_at", "reset_password_token", "sign_in_count", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

为什么不自动创建用户ID?我正在用Rails 3.2运行Desive 2,我终于找到了问题所在。
users
id
列未定义为数据库中的主键,因此Rails没有自动为其赋值。我不知道这是怎么发生的,因为我没有接触创建这个表的迁移(这个文件是由designe生成的)。无论如何,进行完全回滚并再次执行迁移解决了问题。感谢所有回复的人,希望这对将来的任何人都有用

请显示与身份验证相关的代码。通常,设置主键不是您需要做的事情。如果我是你,我会检查我的设备,你可能会在那里发现问题。@Niels,这个异常发生在我在前端创建一个真正的用户时,测试运行正常。。。无论如何,我会检查设备,因为你说我不应该设置主设备是对的key@Denis,我只有
在\u过滤器之前:验证\u用户
在需要身份验证的控制器中,这是我现在所有的身份验证代码。。。我没有改变任何与设计相关的东西看看