Skip to content

Incorrect key validation for schemas in maybe(:array) #455

@yauhenininjia

Description

@yauhenininjia

Describe the bug

Basically it is a reopening of the issue described (and reported as fixed) in #300

Valid keys of nested optional array set via maybe(:array).each(schema) are reported as incorrect. It occurs in latest version 1.13.0 as well

To Reproduce

NestedSchema = Dry::Schema.define do
  required(:bar).filled(:string)
end

BrokenSchema = Dry::Schema.define do
  config.validate_keys = true
  required(:foo).maybe(:array).each(NestedSchema)
end

BrokenSchema.call({ foo: [{ bar: "bar" }] }).errors.to_h

#=> {:foo=>{0=>{:bar=>["is not allowed"]}}}

Expected behavior

errors for the snippet above are empty

My environment

  • Affects my production application: NO
  • Ruby version: 3.1.0
  • OS: macos 11.6.7

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions