提交 fa0380cb 编写于 作者: X Xavier Noria

AC::Parameters#permit! permits hashes in array values

上级 33cb2f33
* `ActionController::Parameters#permit!` permits hashes in array values.
*Xavier Noria*
* Converts hashes in arrays of unfiltered params to unpermitted params.
Fixes #13382
......
......@@ -157,8 +157,10 @@ def permitted?
# Person.new(params) # => #<Person id: nil, name: "Francesco">
def permit!
each_pair do |key, value|
convert_hashes_to_parameters(key, value)
self[key].permit! if self[key].respond_to? :permit!
value = convert_hashes_to_parameters(key, value)
Array.wrap(value).each do |_|
_.permit! if _.respond_to? :permit!
end
end
@permitted = true
......
......@@ -8,9 +8,16 @@ def assert_filtered_out(params, key)
end
setup do
@params = ActionController::Parameters.new({ person: {
age: "32", name: { first: "David", last: "Heinemeier Hansson" }
}})
@params = ActionController::Parameters.new(
person: {
age: '32',
name: {
first: 'David',
last: 'Heinemeier Hansson'
},
addresses: [{city: 'Chicago', state: 'Illinois'}]
}
)
@struct_fields = []
%w(0 1 12).each do |number|
......@@ -233,6 +240,7 @@ def assert_filtered_out(params, key)
assert @params.permitted?
assert @params[:person].permitted?
assert @params[:person][:name].permitted?
assert @params[:person][:addresses][0].permitted?
end
test "permitted takes a default value when Parameters.permit_all_parameters is set" do
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册