Rails 4 - 强参数 - 嵌套对象
我有一个非常简单的问题。但到目前为止还没有找到解决方案。
下面是我发送给服务器的 JSON 字符串:
{
"name" : "abc",
"groundtruth" : {
"type" : "Point",
"coordinates" : [ 2.4, 6 ]
}
}
使用新的许可方法,我得到了:
params.require(:measurement).permit(:name, :groundtruth)
虽然没有出错,但创建的数据库条目中包含了null
,而不是 groundtruth 值。
如果我只设置
params.require(:measurement).permit!
一切都会如期保存,但这当然会破坏强参数提供的安全性。
我找到了允许使用数组的解决方案,但没有一个使用嵌套对象的例子。这肯定是有可能的,因为这应该是很常见的用例。那么,它是如何工作的呢?
134
3
虽然听起来很奇怪,但当你想允许嵌套属性时,你就必须在数组中指定嵌套对象的属性。在你的例子中,应该是
更新,正如 @RafaelOliveira 所建议的那样
另一方面,如果您想嵌套多个对象,则可以将其封装在散列中......如下所示
我发现这个建议对我很有用:
查看 Xavier'github 上的评论 链接。
这种方法会将整个 params[:measurement][:groundtruth]对象列入白名单。
使用原始问题属性:
允许嵌套对象 :