【问题标题】:to_hash and strong_parameters for Rails 5.1 with an array of items用于 Rails 5.1 的 to_hash 和 strong_parameters 以及一系列项目
【发布时间】:2017-10-12 08:13:05
【问题描述】:

我有以下参数声明:

   def line_item_params
     params.require(:line_items).map do |p|
       ActionController::Parameters.new(p.to_hash).permit(:quantity, :price, :menu_item_id)
     end
    end

但得到以下错误:

方法 to_hash 已弃用,将在 Rails 5.1 中删除,因为 ActionController::Parameters 不再继承自哈希。使用 这种弃用的行为暴露了潜在的安全问题。如果你 继续使用此方法,您可能正在创建证券 您的应用程序中可以被利用的漏洞。相反,考虑 使用这些不被弃用的记录方法之一: http://api.rubyonrails.org/v5.0.1/classes/ActionController/Parameters.html

我只是发布一系列项目。这应该如何处理?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5 strong-parameters


    【解决方案1】:
    def line_item_params
      # just to raise ActionController::ParameterMissing if key is missing
      params.require(:line_items) 
      # this is the actual whitelist
      params.permit(line_items: [:quantity, :price, :menu_item_id])
    end
    

    您可以通过将哈希选项传递给 .permit 来将对象数组列入白名单,该数组包含嵌套对象的白名单键。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-22
      • 2023-04-05
      • 2016-12-07
      • 2012-06-26
      • 1970-01-01
      相关资源
      最近更新 更多