Skip to content

Commit e36e7d5

Browse files
committed
Merge pull request ruby-grape#611 from dm1try/fix_grouped_arrays
initialize parent param in default validator only if it's not present
2 parents 286b82a + bfb4563 commit e36e7d5

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

lib/grape/validations/default.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def validate!(params)
1616
attrs.each do |resource_params, attr_name|
1717
if resource_params[attr_name].nil?
1818
validate_param!(attr_name, resource_params)
19-
params[parent_element] = resource_params if parent_element
19+
params[parent_element] = resource_params if parent_element && params[parent_element].nil?
2020
end
2121
end
2222
end

spec/grape/validations/default_spec.rb

+16
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,16 @@ class API < Grape::API
5454
get '/group' do
5555
{ foo_bar: params[:foo][:bar] }
5656
end
57+
58+
params do
59+
optional :array, type: Array do
60+
requires :name
61+
optional :with_default, default: 'default'
62+
end
63+
end
64+
get '/array' do
65+
{ array: params[:array] }
66+
end
5767
end
5868
end
5969
end
@@ -104,4 +114,10 @@ def app
104114
last_response.body.should == { foo_bar: 'foo-bar' }.to_json
105115
end
106116

117+
it 'sets default values for grouped arrays' do
118+
get('/array?array[][name]=name&array[][name]=name2&array[][with_default]=bar2')
119+
last_response.status.should == 200
120+
last_response.body.should == { array: [{ name: "name", with_default: "default" }, { name: "name2", with_default: "bar2" }] }.to_json
121+
end
122+
107123
end

0 commit comments

Comments
 (0)