to_hash 和 strong_parameters 用于包含一系列项目的 Rails 5.1



我有以下参数声明:

   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

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

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,将包含嵌套对象要列入白名单的键的数组,将对象数组列入白名单。

相关内容

  • 没有找到相关文章

最新更新