2017-08-15 3 views
0

私のdelete apiはブールクエリパラメータ/users?force=trueをとります。私のコントローラでは、私はAPI呼び出しを行うとapipieドキュメントブールパラメータのapipie検証が失敗します

param :force, [true, false], required: false, desc: "query parameter." 

ために次のことを追加、私は/ユーザ?力= 1、/ユーザー?力を渡してみました

Apipie::ParamInvalid (Invalid parameter 'force' value "true": Must be one of: <code>true</code>, <code>false</code>.). 

を得るが、 1は "1"として扱われ、何も渡されないとnilとして扱われ、両方の呼び出しが失敗します。検証パスを作成するにはどうすればよいですか?

注:私はAPIの定義が安らかではないことを認識しています。

答えて

0

あなたが通過しようとしているparamは、文字列のように "真"になります。なぜなら、それが失敗する理由です。どんなタイプのキャスティングもせずに、レールはあなたが文字列ではなくブール値を渡そうとしているということを知らない。あなたはホワイトリストに登録する必要があり

、「真」のような有効なオプションで文字列として「偽」:

param :force, [true, false, "true", "false"], required: false, desc: "query parameter." 
+0

はOKああ、私は同様に、真偽の削除とばかり、「真」「偽」に渡すことができますtheresのブール値で渡す方法はない、正しい? – learningtocode

+0

@learningtocode - url paramsではなく、他の場所でブール値trueにparamを設定することはまだ可能だと思いますが、私はまだそれを残しておきます – TomD

関連する問題