Как насчет создания другой 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
)