dry-rb/dry-validation

Support for array items in rule paths

Aperta

#607 aperta il 5 dic 2019

 (9 commenti) (2 reazioni) (0 assegnatari)Ruby (195 fork)github user discovery
featurehelp wanted

Metriche repository

Star
 (1422 stelle)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

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

Guida contributor