Hi. Is it documented behaviour? I think it is not.
require 'dry-validation'
require 'dry/validation/version'
class NewUserContract < Dry::Validation::Contract
params do
config.validate_keys = true
required(:email).filled(:string)
required(:age).value(:integer)
end
end
contract = NewUserContract.new
p contract.call(email: 'jane@doe.org', age: '17', mail: rand(), unexpected_too: rand())
p Dry::Validation::VERSION
#<Dry::Validation::Result{:email=>"jane@doe.org", :age=>17} errors={:unexpected_too=>["is not allowed"]}>
"1.6.0"
It blames : unexpected_too key, but not :mail
Seems it’s happened because mail
is a substring of email
Sorry didn’t have time to go deeper.