Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env ruby
- require 'byebug'
- require 'dry-validation'
- module MyPredicates
- include Dry::Logic::Predicates
- predicate(:nested_one?) do |value|
- (value.is_a? Hash) && value.key?(:alpha)
- end
- predicate(:nested_two?) do |value|
- (value.is_a? Hash) && value.key?(:bravo)
- end
- end
- NestedSchemaOne = Dry::Validation.Schema do
- required(:alpha).filled
- required(:bravo).filled
- end
- NestedSchemaTwo = Dry::Validation.Schema do
- required(:charlie).filled
- required(:delta).filled
- end
- ParentSchema = Dry::Validation.Schema do
- configure do
- predicates(MyPredicates)
- end
- required(:foo).filled
- required(:nested) do
- (nested_one?.then(schema(NestedSchemaOne))).or(
- nested_two?.then(schema(NestedSchemaTwo)))
- end
- end
- print(ParentSchema.(
- foo: 'bar',
- nested: { alpha: '123' }
- ).messages)
- print(ParentSchema.(
- foo: 'bar2',
- nested: { charlie: '123' }
- ).messages)
Add Comment
Please, Sign In to add comment