为了账号安全,请及时绑定邮箱和手机立即绑定

Rails 4-强参数-嵌套对象

Rails 4-强参数-嵌套对象

Cats萌萌 2019-09-21 13:50:46
我有一个非常简单的问题。但是到目前为止还没有找到解决方案。因此,这是我发送到服务器的JSON字符串:{  "name" : "abc",  "groundtruth" : {    "type" : "Point",    "coordinates" : [ 2.4, 6 ]  }}使用新的许可方法,我得到了:params.require(:measurement).permit(:name, :groundtruth)这不会引发任何错误,但是创建的数据库条目包含null而不是groundtruth值。如果我刚设置:params.require(:measurement).permit!一切都按预期方式保存,但这当然会破坏强大参数提供的安全性。我找到了解决方案,如何允许使用数组,但没有一个使用嵌套对象的示例。这一定是有可能的,因为它应该是一个非常普通的用例。那么它是怎样工作的?
查看完整描述

3 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

我发现此建议对我的情况有用:


  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


查看完整回答
反对 回复 2019-09-21
  • 3 回答
  • 0 关注
  • 538 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信