Как разрешить devise сохранить пользователя, если конкретный адрес электронной почты (пустой адрес электронной почты) уже существует? - PullRequest
1 голос
/ 05 июля 2019

У меня есть разработанная модель пользователя. При создании пользователя электронная почта не требуется (электронная почта необязательна). Я могу создать пользователя без электронной почты (пустое письмо) в первый раз. Когда я добавляю пользователя вторым время, когда появляется ошибка

duplicate key value violates unique constraint "index_accounts_on_email" DETAIL: Key (email)=() already exists.

Я думаю, это произойдет, если пустое письмо уже существует.

Есть ли способ проверить уникальность, только если электронная почта не пуста, и я могу добавить столько пользователей с пустыми электронными письмами?

user.rb

class User < ApplicationRecord

 devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :validatable, :confirmable, :omniauthable

protected
 def password_required?
  false
 end

def email_required?
  false
end

end

1 Ответ

1 голос
/ 05 июля 2019

Если вы посмотрите в своем файле миграции, который создал пользователей, вы найдете строку:

add_index :users, :email, unique: true

Один из способов устранения этого - удаление индекса завершено и добавление его снова без уникальности:

remove_index :users, :email
add_index :users, :email

Теперь он не будет проверять уникальность электронной почты, и вы можете справиться с этим самостоятельно в любое время и в любом месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...