dry-rb/dry-validation

Support for array items in rule paths

开放

#607 创建于 2019年12月5日

 (9 条评论) (2 个反应) (0 位负责人)Ruby (196 个派生)github user discovery
featurehelp wanted

仓库指标

星标
 (1,422 个星标)
PR 合并指标
 (30 天内没有已合并 PR)

描述

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

贡献者指南