You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rule validation does not show in errors when the key validated is in an array of hashes
To Reproduce
Provide detailed steps to reproduce, an executable script would be best.
Define the contract
#address_contract.rb
class AddressContract < Dry::Validation::Contract
json do
required(:street_address).filled(:string)
required(:country).filled(:string)
end
end
define another contract that uses AddressContract
#new_user_contract.rb
class NewUserContract < Dry::Validation::Contract
json do
required(:user_details).array(:hash) do
required(:email).filled(:string)
required(:address).hash(AddressContract.schema)
end
end
rule(:user_details).each do
unless /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i.match?(value[:email])
key.failure('has invalid format')
end
end
end
> #<Dry::Validation::Result{:user_details=>[{:email=>"jane", :address=>"17"}]} errors={:user_details=>{0=>{:email=>["has invalid format"], :addresss=>["must be a hash"]}}}>
but got
> #<Dry::Validation::Result{:user_details=>[{:email=>"jane", :address=>"17"}]} errors={:user_details=>{0=>{:address=>["must be a hash"]}}}>
As you can see, it is missing the rule validation for the format of the email. Is this a bug? Or am I missing something here?
My environment
Affects my production application: YES/NO
Ruby version: 3.1.2
OS: MacOS M1
The text was updated successfully, but these errors were encountered:
I think we have something here and it's a little bit subtle under the evaluation of rules. For example, if we make the address field missing a field, the error is also not accurate:
Describe the bug
Rule validation does not show in errors when the key validated is in an array of hashes
To Reproduce
Provide detailed steps to reproduce, an executable script would be best.
Expected behavior
expected output
but got
As you can see, it is missing the rule validation for the format of the email. Is this a bug? Or am I missing something here?
My environment
The text was updated successfully, but these errors were encountered: