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

时间:2012-07-29 10:18:52

标签: ruby-on-rails ruby sqlite devise

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

self.primary_key = :id

这有助于我的测试运行,但现在我遇到了另一个问题。每次我尝试添加用户时,Devise控制器都会失败并显示以下消息:

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运行Devise 2

1 个答案:

答案 0 :(得分:2)

好吧,我终于找到了问题所在。 usersid列未定义为DB中的主键,因此这就是Rails未自动为其分配值的原因。我不知道它是怎么发生的,因为我没有触及创建这个表的迁移(这个文件是由Devise生成的)。无论如何,进行完全回滚并再次执行迁移可以解决问题。感谢所有回复的人,希望将来能为所有人服务。