Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4.2 ActiveAdmin 1.0.0.pre2无法创建AdminUser,因为重复的键值违反了唯一约束;在电子邮件上索引\u管理员\u用户\u_Ruby On Rails_Postgresql_Ruby On Rails 4_Activeadmin - Fatal编程技术网

Ruby on rails Rails 4.2 ActiveAdmin 1.0.0.pre2无法创建AdminUser,因为重复的键值违反了唯一约束;在电子邮件上索引\u管理员\u用户\u

Ruby on rails Rails 4.2 ActiveAdmin 1.0.0.pre2无法创建AdminUser,因为重复的键值违反了唯一约束;在电子邮件上索引\u管理员\u用户\u,ruby-on-rails,postgresql,ruby-on-rails-4,activeadmin,Ruby On Rails,Postgresql,Ruby On Rails 4,Activeadmin,嗨,我很难找出这个错误。昨天我发布了一条消息,说我的AcitveAdmin电子邮件字段总是空的。今天我意识到问题有点大 当我尝试在rails控制台中添加新用户时,会发生以下情况 >> au = AdminUser.new(email: 'sample@tom.com', password: "123456789", password_confirmation: "123456789") => #<AdminUser id: nil, email: "", encrypte

嗨,我很难找出这个错误。昨天我发布了一条消息,说我的AcitveAdmin电子邮件字段总是空的。今天我意识到问题有点大

当我尝试在rails控制台中添加新用户时,会发生以下情况

>> au = AdminUser.new(email: 'sample@tom.com', password: "123456789", password_confirmation: "123456789")
=> #<AdminUser id: nil, email: "", encrypted_password: "$2a$10$Xt6EpJhtQ3d1v62KNZFUk.oi1RYe2gEBBeWVd/vApvi...",reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: nil, updated_at: nil>

>> au.valid?
AdminUser Exists (0.8ms)  SELECT  1 AS one FROM "admin_users" WHERE"admin_users"."email" = 'sample@tom.com' LIMIT 1
=> true

>> au.save
(0.8ms)  BEGIN
AdminUser Exists (1.1ms)  SELECT  1 AS one FROM "admin_users" WHERE "admin_users"."email" = 'sample@tom.com' LIMIT 1
SQL (3.5ms)  INSERT INTO "admin_users" ("encrypted_password","created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"  [["encrypted_password","$2a$10$Xt6EpJhtQ3d1v62KNZFUk.oi1RYe2gEBBeWVd/vApviETIlUvpQ2q"], 
["created_at", "2015-10-21 13:57:44.081780"],["updated_at", "2015-10-21 13:57:44.081780"]]
PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "index_admin_users_on_email"
DETAIL:  Key (email)=() already exists.
: INSERT INTO "admin_users" ("encrypted_password", "created_at","updated_at") VALUES ($1, $2, $3) RETURNING "id"
(1.2ms)  ROLLBACK
ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "index_admin_users_on_email"DETAIL:  Key (email)=() already exists.
我还降级到ActiveAdmin 1.0.0.pre1,但问题仍然存在。

Context ActiveAdmin使用一个名为的东西来处理创建一个经过身份验证的用户模型(在AcitveAdmin的例子中命名为ActiveUser)。Desive非常好,因为它处理添加和验证所有基本身份验证字段,如电子邮件、密码、密码确认等

OP问题 OP存在添加一个
attr\u accessor:email
的问题,该问题覆盖了designe email字段:( 这意味着每次创建用户时,电子邮件总是设置为

但是由于系统的复杂性,ActiveRecord验证查看了正确的电子邮件字段,并说它很好。但是,在保存时,发送了空的
电子邮件(这仍然是一个字符串,因此不会使
not null
约束无效。因此,创建了一个带有空电子邮件的ActiveUser。然后,下次创建ActiveUser时,抛出了一个
重复的
错误(因为插入了另一个电子邮件为
的用户)

如果你有这个问题怎么办
确保电子邮件字段中没有访问者(或密码/密码确认)。如果您需要做一些有趣的事情,请阅读设计指南。

ActiveUser的结果是什么。控制台中的所有?insert语句没有为电子邮件插入值…因此,如果其中有一个用户的电子邮件地址为空,这就是为什么首先会出现重复错误而不是非空冲突错误的原因。您还可以发布您正在使用的ActiveAdmin版本吗?确实有一个用户的电子邮件地址为空。我销毁了这个。现在我可以保存一个新的adminuser,但电子邮件地址显示为
电子邮件:“”
当我使用AdminUser.all时。我将用整个输出更新问题,我直接使用Github的ActiveAdmin1.0.0.pre2。您对AdminUser模型有任何自定义验证吗?如果您添加了答案,我可以接受,如果您愿意的话
>> au = AdminUser.new(email: 'sample@tom.com', password: "123456789", password_confirmation: "123456789")
=> #<AdminUser id: nil, email: "", encrypted_password: "$2a$10$TWpMSdAxPl4vTFg54XvZcOe5Xkc7t4mf2Or7UlbkoA8...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: nil, updated_at: nil>

>> au.valid?
AdminUser Exists (25.6ms)  SELECT  1 AS one FROM "admin_users" WHERE "admin_users"."email" = 'sample@tom.com' LIMIT 1
=> true

>> au.save
(0.7ms)  BEGIN
 AdminUser Exists (0.8ms)  SELECT  1 AS one FROM "admin_users" WHERE "admin_users"."email" = 'sample@tom.com' LIMIT 1
 SQL (61.7ms)  INSERT INTO "admin_users" ("encrypted_password",
  "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id"   
  [["encrypted_password", 
  "$2a$10$TWpMSdAxPl4vTFg54XvZcOe5Xkc7t4mf2Or7UlbkoA8W/n3rOGGwC"], 
  ["created_at", "2015-10-21 14:28:46.750437"], ["updated_at","2015-10-2114:28:46.750437"]]
   (18.0ms)  COMMIT
 => true