Rails 布尔参数的 apipie 验证失败
Rails apipie validation for boolean parameters failing
我的删除 api 采用布尔查询参数 /users?force=true
。在我的控制器中,我为 apipie 文档
添加了以下内容
param :force, [true, false], required: false, desc: "query parameter."
当我拨打 api 电话时,我得到
Apipie::ParamInvalid (Invalid parameter 'force' value "true": Must be one of: <code>true</code>, <code>false</code>.).
我尝试传递 /users?force=1、/users?force,但 1 被视为“1”,未传递任何内容都被视为 nil,两次调用均失败。如何通过验证?
注意:我知道 api 定义不是 restful。
您传递的参数最终是 "true",就像在字符串中一样,而不是布尔值,这就是它失败的原因。没有任何类型转换,rails 不知道您正在尝试传递布尔值,而不是字符串。
您应该将 "true"、"false" 作为有效选项中的字符串列入白名单,例如:
param :force, [true, false, "true", "false"], required: false, desc: "query parameter."
我的删除 api 采用布尔查询参数 /users?force=true
。在我的控制器中,我为 apipie 文档
param :force, [true, false], required: false, desc: "query parameter."
当我拨打 api 电话时,我得到
Apipie::ParamInvalid (Invalid parameter 'force' value "true": Must be one of: <code>true</code>, <code>false</code>.).
我尝试传递 /users?force=1、/users?force,但 1 被视为“1”,未传递任何内容都被视为 nil,两次调用均失败。如何通过验证?
注意:我知道 api 定义不是 restful。
您传递的参数最终是 "true",就像在字符串中一样,而不是布尔值,这就是它失败的原因。没有任何类型转换,rails 不知道您正在尝试传递布尔值,而不是字符串。
您应该将 "true"、"false" 作为有效选项中的字符串列入白名单,例如:
param :force, [true, false, "true", "false"], required: false, desc: "query parameter."