diff --git a/CHANGELOG.md b/CHANGELOG.md index 8521e058d..840c59d11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ #### Fixes * Your contribution here. +* [#1863](https://github.com/ruby-grape/grape/pull/1863): Fix entity data type identification - [@fotos](https://github.com/fotos). ### 1.2.3 (2019/01/16) diff --git a/lib/grape/dsl/inside_route.rb b/lib/grape/dsl/inside_route.rb index b4672bb97..1638270fe 100644 --- a/lib/grape/dsl/inside_route.rb +++ b/lib/grape/dsl/inside_route.rb @@ -84,7 +84,7 @@ def should_be_empty_array?(declared_param, passed_children_params) end def declared_param_is_array?(declared_param) - route_options_params[declared_param.to_s] && route_options_params[declared_param.to_s][:type] == 'Array' + route_options_params[declared_param.to_s] && route_options_params[declared_param.to_s][:type] <= Array end def route_options_params diff --git a/lib/grape/validations/params_scope.rb b/lib/grape/validations/params_scope.rb index 05c0c8c0a..613fcdf4b 100644 --- a/lib/grape/validations/params_scope.rb +++ b/lib/grape/validations/params_scope.rb @@ -241,7 +241,7 @@ def validates(attrs, validations) coerce_type = infer_coercion(validations) - doc_attrs[:type] = coerce_type.to_s if coerce_type + doc_attrs[:type] = coerce_type if coerce_type desc = validations.delete(:desc) || validations.delete(:description) doc_attrs[:desc] = desc if desc diff --git a/spec/grape/api_spec.rb b/spec/grape/api_spec.rb index 6397dbfc4..c23d25935 100644 --- a/spec/grape/api_spec.rb +++ b/spec/grape/api_spec.rb @@ -2795,10 +2795,10 @@ def static subject.get 'method' expect(subject.routes.map(&:params)).to eq [{ - 'group1' => { required: true, type: 'Array' }, + 'group1' => { required: true, type: Array }, 'group1[param1]' => { required: false, desc: 'group1 param1 desc' }, 'group1[param2]' => { required: true, desc: 'group1 param2 desc' }, - 'group2' => { required: true, type: 'Array' }, + 'group2' => { required: true, type: Array }, 'group2[param1]' => { required: false, desc: 'group2 param1 desc' }, 'group2[param2]' => { required: true, desc: 'group2 param2 desc' } }] @@ -2818,7 +2818,7 @@ def static { description: 'nesting', params: { 'root_param' => { required: true, desc: 'root param' }, - 'nested' => { required: true, type: 'Array' }, + 'nested' => { required: true, type: Array }, 'nested[nested_param]' => { required: true, desc: 'nested param' } } } ]