correct the code in some of the examples

This commit is contained in:
Andrei Galușca 2020-09-17 00:04:46 +03:00
parent 2b04a5d3d4
commit 7fb64cc14a
4 changed files with 50 additions and 39 deletions

View File

@ -2,16 +2,18 @@
require "dry-validation"
schema = Dry::Validation.Schema do
required(:email).filled
contract = Class.new(Dry::Validation::Contract) do
schema do
required(:email).filled
required(:age).filled(:int?, gt?: 18)
end
required(:age).filled(:int?, gt?: 18)
end
end.new
errors = schema.call(email: "jane@doe.org", age: 19).messages
errors = contract.call(email: "jane@doe.org", age: 19)
puts errors.inspect
errors = schema.call(email: nil, age: 19).messages
errors = contract.call(email: nil, age: 19)
puts errors.inspect

View File

@ -3,14 +3,16 @@
require "byebug"
require "dry-validation"
schema = Dry::Validation.Schema do
key(:phone_numbers).each(:str?)
end
contract = Class.new(Dry::Validation::Contract) do
schema do
required(:phone_numbers).value(:array).each(:string)
end
end.new
errors = schema.call(phone_numbers: "").messages
errors = contract.call(phone_numbers: "")
puts errors.inspect
errors = schema.call(phone_numbers: ["123456789", 123_456_789]).messages
errors = contract.call(phone_numbers: ["123456789", 123_456_789])
puts errors.inspect

View File

@ -2,29 +2,34 @@
require "dry-validation"
schema = Dry::Validation.Schema do
configure do
def self.messages
super.merge(en: {
contract = Class.new(Dry::Validation::Contract) do
schema do
required(:email).filled
end
def self.messages
super.merge(en: {
dry_validation: {
errors: {
john_email?: "%{value} is not a john email",
example_email?: "%{value} is not a example email"
rules: {
email: {
john?: "%{value} is not a john email",
example?: "%{value} is not an example email"
}
}
}
})
end
}
})
end
required(:email).filled
rule(:email) do
key.failure(:example?, value: value) unless value.end_with?("@example.com")
validate(example_email?: :email) do |value|
value.end_with?("@example.com")
key.failure(:john?, value: value) unless value.start_with?("john")
end
end.new
validate(john_email?: :email) do |value|
value.start_with?("john")
end
end
result = contract.call(email: "jane@doe.org")
errors = schema.call(email: "jane@doe.org").messages
puts errors.inspect
puts result.inspect

View File

@ -2,23 +2,25 @@
require "dry-validation"
schema = Dry::Validation.Schema do
required(:address).schema do
required(:city).filled(min_size?: 3)
contract = Class.new(Dry::Validation::Contract) do
schema do
required(:address).schema do
required(:city).filled(min_size?: 3)
required(:street).filled
required(:street).filled
required(:country).schema do
required(:name).filled
required(:code).filled
required(:country).schema do
required(:name).filled
required(:code).filled
end
end
end
end
end.new
errors = schema.call({}).messages
errors = contract.call({})
puts errors.inspect
errors = schema.call(address: {city: "NYC"}).messages
errors = contract.call(address: {city: "NYC"})
puts errors.inspect