Module: Interactor::Validation::Validators::Length

Defined in:
lib/interactor/validation/validators/length.rb

Instance Method Summary collapse

Instance Method Details

#validate_length(param, value, rule) ⇒ Object



7
8
9
10
11
12
13
14
15
# File 'lib/interactor/validation/validators/length.rb', line 7

def validate_length(param, value, rule)
  # Use .length for collections (Array/Hash), .to_s.length for other types
  len = value.respond_to?(:length) && !value.is_a?(String) ? value.length : value.to_s.length
  unit = collection?(value) ? "items" : "characters"

  validate_minimum_length(param, len, rule[:minimum], unit, rule[:message]) if rule[:minimum]
  validate_maximum_length(param, len, rule[:maximum], unit, rule[:message]) if rule[:maximum]
  validate_exact_length(param, len, rule[:is], unit, rule[:message]) if rule[:is]
end