Как обработать проверку уникальности электронной почты при создании пользователя в случае OmniAuth - PullRequest
0 голосов
/ 15 июня 2019

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

Я использую несколько провайдеров (Google, Facebook).Поскольку и Gmail, и Facebook были созданы с одинаковым почтовым идентификатором.

def self.from_omniauth(auth)
    user = User.where(provider: auth.provider, email: auth.info.email).first
    user ||= User.create!(provider: auth.provider, uid: auth.uid, name: auth.info.name, email: auth.info.email, password: Devise.friendly_token[0,20])
    user
end

1 Ответ

1 голос
/ 15 июня 2019

Как насчет создания другой UserProvider модели, которая belongs_to User модели.

Таким образом, когда пользователь использует третье лицо для регистрации / входа в вашу систему, вы можете управлять, если email используется или нет для создания нового пользователя.Затем вы создаете новую UserProvider запись для этого пользователя, если ее там нет

user = User.where(:email => auth.info.email).first
user ||= User.create!(name: auth.info.name, email: auth.info.email, password: Devise.friendly_token[0,20])

user_provider = UserProvider.find_or_create_by(
                                provider: auth.provider,
                                uid: auth.uid,
                                user_id: user.id
                             )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...