dry-rb/dry-validation

Support for array items in rule paths

Ouverte

#607 ouverte le 5 déc. 2019

 (9 commentaires) (2 réactions) (0 personne assignée)Ruby (195 forks)github user discovery
featurehelp wanted

Métriques du dépôt

Stars
 (1 422 étoiles)
Métriques de merge PR
 (Aucune PR mergée en 30 j)

Description

Examples

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

Guide contributeur