dry-validation

Array As Input

A schema can accept either a hash or an array as the input. If you want to define a schema for an array, simply use each:

schema = Dry::Validation.Schema do
  each do
    schema do
      required(:name).filled(:str?)
      required(:age).filled(:int?)
    end
  end
end

schema.([{ name: 'Jane', age: 21 }, { name: 'Joe', age: nil }]).messages
# { 1 => { age: ['must be filled'] } }