omniauth gem を使用すると、プロバイダーに関係なく、成功したログインに対して単一のルート コールバックを定義する必要があります。
def auth_callback
auth_data = request.env['omniauth.auth']
if auth_data.has_key('something')
process_one(auth_data)
else
process_two(auth_data)
end
# No view is available here
end
def process_one
# do something then render view for process_one
return
end
def process_two
# do something then render view for process_two
return
end
コントローラーが auth_callback メソッドに戻って、対応するビュー (存在しない) を表示しないようにするにはどうすればよいですか? process_one または process_two メソッドが返されたら、処理は完了したと見なす必要があります。
ベストアンサー1
render
これらのメソッドを具体的に呼び出さないのはなぜですか?
def process_one
# do something then render view for process_one
render :process_one and return
end
Rails は、すでに実行されたことを検出し、再度レンダリングを試行しないようにします。