Skip to content

Commit

Permalink
Merge affd474 into 1e97967
Browse files Browse the repository at this point in the history
  • Loading branch information
dnesteryuk committed Oct 28, 2020
2 parents 1e97967 + affd474 commit b34308e
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 2 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -7,6 +7,7 @@
#### Fixes

* Your contribution here.
* [#2127](https://github.com/ruby-grape/grape/pull/2127): Fix a performance issue with dependent params - [@dnesteryuk](https://github.com/dnesteryuk).
* [#2126](https://github.com/ruby-grape/grape/pull/2126): Fix warnings about redefined attribute accessors in `AttributeTranslator` - [@samsonjs](https://github.com/samsonjs).
* [#2121](https://github.com/ruby-grape/grape/pull/2121): Fix 2.7 deprecation warning in validator_factory - [@Legogris](https://github.com/Legogris).
* [#2115](https://github.com/ruby-grape/grape/pull/2115): Fix declared_params regression with multiple allowed types - [@stanhu](https://github.com/stanhu).
Expand Down
22 changes: 22 additions & 0 deletions UPGRADING.md
@@ -1,6 +1,28 @@
Upgrading Grape
===============

### Upgrading to >= 1.5.1

#### Dependent params

If you use [dependent params](https://github.com/ruby-grape/grape#dependent-parameters) with
`Grape::Extensions::Hash::ParamBuilder`, make sure a parameter to be dependent on is set as a Symbol.
If a String is given, a parameter that other parameters depend on won't be found even if it is present.

_Correct_:
```ruby
given :matrix do
# dependent params
end
```

_Wrong_:
```ruby
given 'matrix' do
# dependent params
end
```

### Upgrading to >= 1.5.0

Prior to 1.3.3, the `declared` helper would always return the complete params structure if `include_missing=true` was set. In 1.3.3 a regression was introduced such that a missing Hash with or without nested parameters would always resolve to `{}`.
Expand Down
5 changes: 3 additions & 2 deletions lib/grape/validations/params_scope.rb
Expand Up @@ -61,8 +61,9 @@ def meets_dependency?(params, request_params)
end

return params.any? { |param| meets_dependency?(param, request_params) } if params.is_a?(Array)
return false unless params.respond_to?(:with_indifferent_access)
params = params.with_indifferent_access

# params might be anything what looks like a hash, so it must implement a `key?` method
return false unless params.respond_to?(:key?)

@dependent_on.each do |dependency|
if dependency.is_a?(Hash)
Expand Down

0 comments on commit b34308e

Please sign in to comment.