From 46c2737982b3fc8f8b0dbe73f37d2a916f56e4aa Mon Sep 17 00:00:00 2001 From: Daniel Sager Date: Tue, 17 Dec 2013 12:26:44 +0100 Subject: [PATCH 1/2] added failing spec: default values for grouped parameters --- spec/grape/validations/default_spec.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/spec/grape/validations/default_spec.rb b/spec/grape/validations/default_spec.rb index 9a49571aa0..c0afe7d462 100644 --- a/spec/grape/validations/default_spec.rb +++ b/spec/grape/validations/default_spec.rb @@ -40,6 +40,15 @@ class API < Grape::API get '/numbers' do { random_number: params[:random], non_random_number: params[:non_random_number] } end + + params do + group :foo do + optional :bar, default: 'foo-bar' + end + end + get '/group' do + { foo_bar: params[:foo][:bar] } + end end end end @@ -83,4 +92,11 @@ def app before['non_random_number'].should == after['non_random_number'] before['random_number'].should_not == after['random_number'] end + + it 'set default values for optional grouped params' do + get('/group') + last_response.status.should == 200 + last_response.body.should == { foo_bar: 'foo-bar' }.to_json + end + end From f5b87725befe3c14b28d9281a9abc8378e87b73d Mon Sep 17 00:00:00 2001 From: dm1try Date: Tue, 17 Dec 2013 23:57:46 +0300 Subject: [PATCH 2/2] Fix default values for grouped params --- CHANGELOG.md | 1 + lib/grape/validations/default.rb | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index be049eb138..302144d9d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Next Release * [#500](https://github.com/intridea/grape/pull/500): Skip entity auto-detection when explicitely passed - [@yaneq](https://github.com/yaneq). * [#503](https://github.com/intridea/grape/pull/503): Calling declared(params) from child namespace fails to include parent namespace defined params - [@myitcv](https://github.com/myitcv). * [#512](https://github.com/intridea/grape/pull/512): Don't create `Grape::Request` multiple times - [@dblock](https://github.com/dblock). +* [#538](https://github.com/intridea/grape/pull/538): Fix default values for grouped params - [@dm1try](https://github.com/dm1try). * Your contribution here. diff --git a/lib/grape/validations/default.rb b/lib/grape/validations/default.rb index b48a0753e2..63018e3e84 100644 --- a/lib/grape/validations/default.rb +++ b/lib/grape/validations/default.rb @@ -11,10 +11,12 @@ def validate_param!(attr_name, params) end def validate!(params) - params = AttributesIterator.new(self, @scope, params) - params.each do |resource_params, attr_name| + attrs = AttributesIterator.new(self, @scope, params) + parent_element = @scope.element + attrs.each do |resource_params, attr_name| if resource_params[attr_name].nil? validate_param!(attr_name, resource_params) + params[parent_element] = resource_params if parent_element end end end