Я работаю с OmniAuth с Rails
и пытаюсь получить Twitter, Facebook и Google подключил для проверки подлинности, но продолжаю работать в эту ошибку:Rails - Создание электронной почты, когда один не существует с интеграцией OmniAuth
PG::Error: ERROR: duplicate key value violates unique constraint "index_users_on_email"
DETAIL: Key (email)=() already exists.
Вот мой Authentication контроллер:
class AuthorizationsController < ApplicationController
def create
authentication = Authorization.find_by_provider_and_uid(auth['provider'], auth['uid'])
if authentication
flash[:notice] = "Signed In Successfully"
sign_in authentication.user, event: :authentication
redirect_to root_path
else
athlete = Athlete.new
athlete.apply_omniauth(auth)
debugger
if athlete.save(validate: false)
flash[:notice] = "Account created and signed in successfully"
sign_in athlete, event: :authentication
redirect_to finalize_profile_path
else
flash[:error] = "An error has occurred. Please try again."
redirect_to root_path
end
end
end
def failure
render json: params.to_json
end
private
def auth
request.env["omniauth.auth"]
end
def resource(user_type)
user_type.downcase.to_sym
end
end
Я думаю, что происходит в том, что, когда спортсмен будет создан, он создает один с пустым адресом электронной почты и уникальный ключ не удается ... как я мог бы обойти эту проблему ? Я думаю, что я знаю, как это исправить для интеграции Google, но поскольку Twitter не возвращает письмо, этот вопрос не будет решать сам
это хорошо. Но гораздо сложнее, чем нужно. Вы могли бы просто сделать что-то вроде: 'user.email = auth.info.email =" #{auth.uid}@twitter.com "' –