Rails: 2 つの強力なパラメータが同時に送信されたときにエラーが発生する方法は?そのうちの 1 つだけを許可する
概要
入力で 2 つの異なるパラメータ、param1 と param2 を受け入れるとしますが、それらを一緒に渡すことは許可していません。この場合どうすればエラーになりますか?クライアントに何か間違ったものを送信していることを通知する必要があります
params.require(:key).permit(
:other_param,
:param1 || :param2).to_hash
ありがとう
解決策
両方を許可して、コントローラー内のロジックを検証するのはどうでしょうか?
# When `param1` and `param2` are sent at the same time,
# a 400 - Invalid Request will be sent back to the client
def hello
hello_params = params.require(:key).permit(:param1, :param2)
# Return 400 - Invalid Request if both params are present
if hello_params[:param1] && hello_params[:param2]
render json: { message: "Both param1 and param2 should not be sent together." }, status: 400
return
end
render json: { message: "Hello, world!" }
end