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

标签 ruby-on-rails ruby sqlite devise

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

self.primary_key = :id

这有助于我的测试运行,但现在我遇到了另一个问题。每次我尝试添加用户时,Devise 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 运行 Devise 2

最佳答案

好吧,我终于找到了问题所在。 usersid column 没有被定义为数据库中的主键,所以这就是 Rails 没有自动为其分配值的原因。我不知道它是怎么发生的,因为我没有接触到创建这个表的迁移(这个文件是由 Devise 生成的)。无论如何,完全回滚并再次执行迁移解决了这个问题。感谢所有回复的人,并希望这对 future 的任何人都有帮助。

关于ruby-on-rails - 设计:尝试创建没有 ID 的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11708442/

相关文章:

ruby-on-rails - 如何在任何异常情况下使用 RSpec 的 should_raise?

html - 如何使用 Sinatra 和 Sequel 从复选框 HTML 表单中获取数组?

php - 使用元数据存储和检索文件的最佳方法

ruby-on-rails - ruby on Rails 3.1 网页设计

ruby-on-rails - 如何为类中的特定方法连接到不同的数据库?

ruby - 捕获大量错误并将所有错误捕获为常量

python - 将表单字段插入数据库(Bottle、sqlite)

java - Android SQLite 使用数组更新列

sqlite3 varchar 与 "like"匹配但不与 "="匹配

ruby-on-rails - 尝试销毁实例时参数数量错误(1 代表 0)