Привет, мне трудно найти эту ошибку. Вчера я опубликовал question, что мое поле электронной почты AcitveAdmin всегда пустое .Сегодний я понял, что проблема немного больше.Rails 4.2 ActiveAdmin 1.0.0.pre2 Невозможно создать AdminUser из-за дублирования значения ключа, нарушает уникальное ограничение «index_admin_users_on_email
Когда я пытаюсь добавить новый пользователь в рельсах консоль происходит следующее.
>> au = AdminUser.new(email: '[email protected]', 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" = '[email protected]' LIMIT 1
=> true
>> au.save
(0.8ms) BEGIN
AdminUser Exists (1.1ms) SELECT 1 AS one FROM "admin_users" WHERE "admin_users"."email" = '[email protected]' 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.
Но я никогда не использовал это письмо. Я недавно распределял свою базу данных Итак, теперь в продуктивной среде я использую другую базу данных. Но для развития каждый ng остался прежним. Один AdminUser в таблице admin_users
по-прежнему доступен, и я могу войти в него с помощью панели управления ActiveAdmin.
У меня проблема similar, но решения для меня не работают. Есть ли у кого-нибудь предложения? Спасибо всем заблаговременно!
Update
Оказалось, там был adminuser с нулевым адресом. Вот почему я получил поле электронной почты для публикации. Я уничтожил этого пользователя. Теперь я могу добавить другого администратора. Но поле электронной почты все еще не написано.
>> au = AdminUser.new(email: '[email protected]', 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" = '[email protected]' LIMIT 1
=> true
>> au.save
(0.7ms) BEGIN
AdminUser Exists (0.8ms) SELECT 1 AS one FROM "admin_users" WHERE "admin_users"."email" = '[email protected]' 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
Я также понизил до ActiveAdmin 1.0.0.pre1, но проблема все еще существует.
Каковы результаты 'ActiveUser.all' в консоли? Оператор insert isn ' t вставляя значение для электронной почты ... Поэтому, если есть пользователь, который имеет какой-то NULL-адрес электронной почты, поэтому вы сначала получаете дублируемую ошибку вместо ошибки NULL-нарушения. lso можете ли вы опубликовать какую версию ActiveAdmin вы используете? – wspurgin
На самом деле был пользователь с нулевым адресом электронной почты. Я уничтожил этот. Теперь я могу сохранить нового администратора, но и там адрес электронной почты отображается как «email:» «когда я использую AdminUser.all. Я буду обновлять вопрос с помощью всего вывода – theDrifter
И я использую ActiveAdmin1.0.0.pre2 непосредственно из github – theDrifter