dry-rb / dry-rb/dry-validation
Support for array items in rule paths
- Dominant language
- Ruby
- Stars
- 1.4k
- Forks
- 195
- PR merge metrics
- No merged PRs in 30d
Description
## Examples
```ruby
require 'dry-validation'
class PropsContract < Dry::Validation::Contract
json do
required(:contacts).value(:array, min_size?: 1).each do
hash do
required(:name).filled(:string)
required(:email).filled(:string)
required(:phone).filled(:string)
end
end
end
rule("contacts[].email").each do
key.failure("email not valid") unless value.include?('@')
end
end
c = PropsContract.new
c.(
contacts: [
{ name: 'Jane', email: 'jane@doe.org', phone: '123' },
{ name: 'John', email: 'oops', phone: '123' }
]).errors.to_h.inspect
# {:email=>{1=>["email not valid"]}}
```
## Resources
Refs #603
Contributor guide
Assessment
This issue has not been assessed yet.