module RequestParamsValidation::Params::Validators::Length

Public Instance Methods

default_invalid_length_message(min, max) click to toggle source
# File lib/request_params_validation/params/validators/length.rb, line 19
def default_invalid_length_message(min, max)
  message = if param.element_of_array?
              'All elements of the array should have a length'
            else
              'Length should be'
            end

  if min && max
    min == max ? "#{message} equal to #{max}" : "#{message} between #{min} and #{max}"
  elsif min
    "#{message} greater or equal than #{min}"
  else
    "#{message} less or equal than #{max}"
  end
end
validate_length!() click to toggle source
# File lib/request_params_validation/params/validators/length.rb, line 5
def validate_length!
  min = param.length.min
  max = param.length.max

  if (min && value.length < min) || (max && value.length > max)
    raise_error(
      :on_invalid_parameter_length,
      min: min,
      max: max,
      details: param.length.message || default_invalid_length_message(min, max)
    )
  end
end