fix bug when validating within array parameters #495
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
#333 introduced functionality to validate arrays. The case it was tested against is this:
{ tags: [name: "ruby", name: "python"] }
will pass validation, and{ tags: [foo: "bar"] }
will fail with a 400.However, if you have a more complicated case, where you have new parameter scopes within each element of the array, grape throws an ArgumentError because
ParamsScope#params
expects to be receiving a hash (and#should_validate?
also behaves unexpectedly). E.g.:You will get a 500 rather than a validation error or success when you try to submit:
This pull request fixes that issue (although I'm not entirely happy with the deep nesting in
#params
) and, more importantly, adds a bunch of tests.