dry-rb/dry-validation

Support for array items in rule paths

Aberta

#607 aberto em 5 de dez. de 2019

 (9 comentários) (2 reações) (0 responsável)Ruby (195 forks)github user discovery
featurehelp wanted

Métricas do repositório

Stars
 (1.422 estrelas)
Métricas de merge de PR
 (Nenhuma PRs mesclada em 30d)

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

Guia do colaborador