gpt4 book ai didi

ruby-on-rails - Rails - 强参数 - 嵌套对象

转载 作者:行者123 更新时间:2023-12-03 04:26:53 26 4
gpt4 key购买 nike

我有一个非常简单的问题。但目前还没有找到解决办法。

这是我发送到服务器的 JSON 字符串:

{
"name" : "abc",
"groundtruth" : {
"type" : "Point",
"coordinates" : [ 2.4, 6 ]
}
}

使用新的许可方法,我得到了:

params.require(:measurement).permit(:name, :groundtruth)

这不会引发错误,但创建的数据库条目包含 null 而不是真实值。

如果我只是设置:

params.require(:measurement).permit!

一切都按预期保存,但是当然,这会破坏强参数提供的安全性。

我找到了解决方案,如何允许数组,但没有找到使用嵌套对象的单个示例。这一定是可能的,因为它应该是一个非常常见的用例。那么,它是如何工作的呢?

最佳答案

虽然听起来很奇怪,但当您想要允许嵌套属性时,您确实在数组中指定了嵌套对象的属性。在你的情况下,它会是

按照@RafaelOliveira的建议更新

params.require(:measurement)
.permit(:name, :groundtruth => [:type, :coordinates => []])

另一方面,如果您想要嵌套多个对象,那么您可以将其包装在散列中......就像这样

params.require(:foo).permit(:bar, {:baz => [:x, :y]})


Rails 实际上对此有很好的文档:http://api.rubyonrails.org/classes/ActionController/Parameters.html#method-i-permit

为了进一步说明,您可以查看 permitstrong_parameters 本身的实现:https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/strong_parameters.rb#L246-L247

关于ruby-on-rails - Rails - 强参数 - 嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18436741/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com