Rails 4-强参数-嵌套对象

我有一个非常简单的问题。但是到目前为止还没有找到解决方案。


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


{

  "name" : "abc",

  "groundtruth" : {

    "type" : "Point",

    "coordinates" : [ 2.4, 6 ]

  }

}

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


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

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


如果我刚设置:


params.require(:measurement).permit!

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


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


Cats萌萌
浏览 543回答 3
3回答

缥缈止盈

我发现此建议对我的情况有用:  def product_params    params.require(:product).permit(:name).tap do |whitelisted|      whitelisted[:data] = params[:product][:data]    end  end检查Xavier在github上的评论的链接。这种方法将整个params [:measurement] [:groundtruth]对象列入白名单。使用原始问题属性:  def product_params    params.require(:measurement).permit(:name, :groundtruth).tap do |whitelisted|      whitelisted[:groundtruth] = params[:measurement][:groundtruth]    end  end
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Ruby