class RediSearch::Validations::Numericality

Attributes

allow_nil[R]
allow_nil?[R]
field[R]
only_integer[R]
only_integer?[R]
within[R]

Public Class Methods

new(field:, within:, only_integer: false, allow_nil: false) click to toggle source
# File lib/redi_search/validations/numericality.rb, line 8
def initialize(field:, within:, only_integer: false, allow_nil: false)
  @field = field
  @within = within
  @only_integer = only_integer
  @allow_nil = allow_nil
end

Public Instance Methods

validate!(object) click to toggle source
# File lib/redi_search/validations/numericality.rb, line 15
def validate!(object)
  value = object.send(field)

  return true if value.nil? && allow_nil?

  validate_numberness!(value)
  validate_inclusion!(object)
end

Private Instance Methods

validate_inclusion!(object) click to toggle source
# File lib/redi_search/validations/numericality.rb, line 40
def validate_inclusion!(object)
  Inclusion.new(field: field, within: within).validate!(object)
end
validate_numberness!(value) click to toggle source
# File lib/redi_search/validations/numericality.rb, line 30
def validate_numberness!(value)
  raise(ValidationError, "#{field} must be a number") unless
    value.is_a?(Numeric)

  raise(ValidationError, "#{field} must be an Integer") if
    only_integer? && !value.is_a?(Integer)

  true
end