class RequestParamsValidation::Params::Validator

Attributes

original_value[R]
param[R]
value[R]

Public Class Methods

new(param_definition, value) click to toggle source
# File lib/request_params_validation/params/validator.rb, line 15
def initialize(param_definition, value)
  @param = param_definition
  @value = value
  @original_value = value
end

Public Instance Methods

validate_and_coerce() click to toggle source
# File lib/request_params_validation/params/validator.rb, line 21
def validate_and_coerce
  validate_presence! if param.validate_presence?

  if value.blank? && param.has_default?
    @value = param.default
    return value
  end

  return value if value.nil?

  validate_type! if param.validate_type?

  case param.type
  when Params::ARRAY_TYPE
    iterate_array
  when Params::HASH_TYPE
    iterate_hash
  end

  @value = Params::Converter.coerce(param, value)

  validate_inclusion!         if param.validate_inclusion?
  validate_length!            if param.validate_length?
  validate_value!             if param.validate_value?
  validate_format!            if param.validate_format?
  validate_custom_validation! if param.validate_custom_validation?

  @value
end

Private Instance Methods

iterate_array() click to toggle source
# File lib/request_params_validation/params/validator.rb, line 53
def iterate_array
  value.map! do |element_value|
    self.class.new(param.elements, element_value).validate_and_coerce
  end
end
iterate_hash() click to toggle source
# File lib/request_params_validation/params/validator.rb, line 59
def iterate_hash
  Params.validate!(param.sub_definition, value) # recursion for the sub_definition
end
raise_error(exception_type, options = {}) click to toggle source
# File lib/request_params_validation/params/validator.rb, line 63
def raise_error(exception_type, options = {})
  options = options.merge(
    param_key: param.key,
    param_value: original_value,
    param_type: param.type
  )

  raise RequestParamsValidation.exceptions.send(exception_type).new(options)
end