Module: Interactor::Validation::Validators::Numeric

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

Instance Method Summary collapse

Instance Method Details

#validate_numeric(param, value, rule) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/interactor/validation/validators/numeric.rb', line 7

def validate_numeric(param, value, rule)
  unless numeric?(value)
    msg = rule.is_a?(::Hash) ? rule[:message] : nil
    errors.add(param, :not_a_number, message: msg || "is not a number")
    return
  end

  num = coerce_numeric(value)
  rule = {} unless rule.is_a?(::Hash)

  check_numeric_constraint(param, num, :greater_than, rule) { |n, v| n <= v }
  check_numeric_constraint(param, num, :greater_than_or_equal_to, rule) { |n, v| n < v }
  check_numeric_constraint(param, num, :less_than, rule) { |n, v| n >= v }
  check_numeric_constraint(param, num, :less_than_or_equal_to, rule) { |n, v| n > v }
  check_numeric_constraint(param, num, :equal_to, rule) { |n, v| n != v }
end