module SmartCore::Validator::Commands::WorkWithNestedsMixin

@api private @since 0.1.0

Public Instance Methods

build_nested_validator(validator, nested_validations) click to toggle source

@param validator [SmartCore::Validator] @param nested_validations [Proc] @return [SmartCore::Validator]

@api private @since 0.1.0

# File lib/smart_core/validator/commands/work_with_nesteds_mixin.rb, line 26
def build_nested_validator(validator, nested_validations)
  Class.new(validator.class).tap do |klass|
    klass.clear_commands
    klass.instance_eval(&nested_validations)
  end.new(**validator.__attributes__)
end
build_sub_validator(validator, another_validating_klass) click to toggle source

@param validator [SmartCore::Validator] @param another_validating_klass [Class<SmartCore::Validator>] @return [SmartCore::Validator]

@api private @since 0.1.0

# File lib/smart_core/validator/commands/work_with_nesteds_mixin.rb, line 39
def build_sub_validator(validator, another_validating_klass)
  another_validating_klass.new(**validator.__attributes__)
end
check_nested_validations(validator, nested_validations) click to toggle source

@param validator [SmartCore::Validator] @param nested_validations [Proc] @return [void]

@api private @since 0.1.0

# File lib/smart_core/validator/commands/work_with_nesteds_mixin.rb, line 12
def check_nested_validations(validator, nested_validations)
  nested_validator = build_nested_validator(validator, nested_validations)

  unless nested_validator.valid?
    validator.__append_errors__(nested_validator.__validation_errors__)
  end
end