强参数允许阵列数组

时间:2013-11-04 23:11:54

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

我正在尝试POST的数据看起来像{ foo: [[:bar, 1], [:baz, 0]] }

如何使用strong parameters允许这样做?我能得到的最接近的是

params.permit(foo: [[]])返回{"foo"=>[]}

2 个答案:

答案 0 :(得分:5)

Maletor,

在我看来,强参数无法处理数组的数组。 我确实阅读了code of it in github,它处理的是符号,字符串和哈希

对于这种情况,您必须使用自己的代码处理。

答案 1 :(得分:0)

基本上:

def permitted_params
  result = params.require(:model).permit(:attributes).to_h # No array of arrays or hashes
  result[:model][:array_of_arrays] = params[:model][:array_of_arrays]
  result
end

再走一步,假设您有一个Model#json,并且想存储model.json[:array_of_arrays] = [[]]

def permitted_params
  result = params.require(:model).permit(:attributes).to_h # No array of arrays or hashes
  result[:json] ||= {}
  result[:json].merge!(array_of_arrays: params[:model][:json][:array_of_arrays])
  result
end

在致电to_h之前,请确保已允许所有不受信任的参数,并请小心之后将其合并。