我发帖:
{'a': 1, 'b': 2}
其中 key
a
始终是必需的,而 key b
是可选的。我如何使用 Rails strong params 语法要求 a
并允许 b
? params.require(:a).permit(:b)
不起作用...
你正在成为初学者常见误解的受害者。
ActionController::Patameters#require
的作用不是验证参数的存在,而是如果参数的结构与预期输入完全不匹配,它会提前退出。验证通常由 Rails 中的模型完成。
例如,当您拥有典型的 Rails 参数白名单时:
def thing_parameters
params.require(:thing)
.permit(:foo, :bar, :baz)
end
如果
params[:thing]
为零,继续处理请求并尝试更新/创建事物是没有意义的。因此我们提早退出并返回 400 Bad Request 回复。