Merge pull request #32593 from sdhull/fix-strong-params-permit-bang

Fixes StrongParameters `permit!` to work with nested arrays
This commit is contained in:
Rafael Mendonça França 2018-04-19 15:05:27 -04:00
commit 0bf3e769e7
No known key found for this signature in database
GPG Key ID: FC23B6D0F1EEE948
2 changed files with 5 additions and 2 deletions

@ -374,7 +374,7 @@ def permitted?
# Person.new(params) # => #<Person id: nil, name: "Francesco">
def permit!
each_pair do |key, value|
Array.wrap(value).each do |v|
Array.wrap(value).flatten.each do |v|
v.permit! if v.respond_to? :permit!
end
end

@ -353,12 +353,15 @@ def walk_permitted(params)
assert_equal "Jonas", @params[:person][:family][:brother]
end
test "permit is recursive" do
test "permit! is recursive" do
@params[:nested_array] = [[{ x: 2, y: 3 }, { x: 21, y: 42 }]]
@params.permit!
assert_predicate @params, :permitted?
assert_predicate @params[:person], :permitted?
assert_predicate @params[:person][:name], :permitted?
assert_predicate @params[:person][:addresses][0], :permitted?
assert_predicate @params[:nested_array][0][0], :permitted?
assert_predicate @params[:nested_array][0][1], :permitted?
end
test "permitted takes a default value when Parameters.permit_all_parameters is set" do