是否可以使用强参数标记哈希的单个属性?
给出如下输入:
{
"example" => {
"optional": 1234,
"required": 5678
}
}
标准的强对策例子是:
params.require(:example).permit(:optional, :required)
鉴于您可以要求某些参数,我认为以下内容可行:
params.require(:example).require(:required)
params.require(:example).permit(:optional)
我试过了:
params.require(:example => [ :required ]).permit(:optional)
params.require(:example).permit(:optional)
params[:example].require(:required)
还有我能想到的任何其他事情。
有人知道它是否可能吗?
答案 0 :(得分:5)
格雷格!
我有同样的问题,但毕竟我发现,这不是合适的问题。
看,这是strong_parameters
gem:
def require(key)
self[key].presence || raise(ActionController::ParameterMissing.new(key))
end
所以,基本上,没有办法在params hash中要求“required”属性。但从不同的角度看它。我认为最好编写自己的require方法来做到这一点。由于我使用的是rails,我只是将validates_presence_of
添加到模型中。如果要使其动态化,可以创建自定义验证。你可以在这里找到它的文档:
答案 1 :(得分:0)
你可以做的是使用
def example_params
params.require(:example)
params[:example].require(:required)
params.require(:example).permit(:required, :optional)
end
如果缺少:example
,第一行会失败。如果:required
中缺少:example
,则第二行会失败。第三行返回您的期望,同时允许:optional
。