Techioz Blog

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