私は omniauth を使用して作業しておりRails
、認証のために Twitter、Facebook、および Google を接続しようとしていますが、このエラーが引き続き発生します。
PG::Error: ERROR: duplicate key value violates unique constraint "index_users_on_email"
DETAIL: Key (email)=() already exists.
これが私の認証コントローラーです:
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 はメールを返さないため、この問題は解決しません。