所以,我设置了一个分段,并开发分支,现在我在本地注册一个新用户时遇到了这个错误:
PG::Error: ERROR: null value in column "uid" violates
not-null constraint DETAIL: Failing row contains
(7, test@gmail.com, $2a$10$WfiHKzYq4ovZtZoVAB.fRertuOSWezZYBw.RxkSqfBK89WbzcYxDK,
null, null, null, 0, null, null, null, null,
2013-08-13 07:20:13.484617, 2013-08-13 07:20:13.484617,
null, null, null, null). : INSERT INTO "users"
("created_at", "email", "encrypted_password", "updated_at")
VALUES ($1, $2, $3, $4) RETURNING "uid"
schema.rb snippit
create_table "users", id: false, force: true do |t|
t.integer "id", null: false
t.string "email", default: ""
t.string "encrypted_password", default: ""
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at"
t.datetime "updated_at"
t.boolean "admin"
t.string "provider"
t.string "uid", null: false
t.string "username"
end
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
在解决之前我无法将任何新代码推送到生产环境,这很烦人:/
答案 0 :(得分:2)
问题是您在数据库中创建新用户的代码没有为该行定义uid
值。您的数据库已限制该字段以禁止将行uid
作为空行。因此,您应该从数据库中删除此约束,或者更改代码以通过uid
。
答案 1 :(得分:2)
您的uid
不可为空,但您没有给它任何值。在注册用户时,让您的应用程序生成一个。
Ruby有一个名为Secure Random的模块,可用于生成uid。它的用法也很简单。像,
require 'securerandom'
uid = SecureRandom.hex(10)
但是,您可以使用factory girl初始化对象。但是为了测试目的。