5

我有我试图发布的数据,看起来像{ foo: [[:bar, 1], [:baz, 0]] }.

我如何允许使用强参数?我能得到的最接近的是

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

4

2 回答 2

5

马勒托,

在我看来,强参数无法处理数组数组。我确实在 github 中阅读了它的代码,它处理Symbol、String 和 Hash

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

于 2015-11-11T17:05:36.247 回答
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,并注意之后合并的内容。

于 2019-05-23T05:44:23.267 回答