class ValidateMe::IntegerLimitValidations

Attributes

column[R]

Public Class Methods

call(base_class:, column: return nil unless column.type == :integer && column.limit.present?) click to toggle source
# File lib/validate_me/integer_limit_validations.rb, line 5
def self.call base_class:, column:
  return nil unless column.type == :integer && column.limit.present?

  new(column).validate base_class
end
new(column) click to toggle source
# File lib/validate_me/integer_limit_validations.rb, line 11
def initialize column
  @column = column
end

Public Instance Methods

validate(base_class) click to toggle source
# File lib/validate_me/integer_limit_validations.rb, line 15
def validate base_class
  base_class.send(
    :validates,
    column.name,
    numericality: {
      greater_than: minimum_value,
      less_than:    maximum_value
    },
    allow_nil: true
  )
end

Private Instance Methods

maximum_value() click to toggle source
# File lib/validate_me/integer_limit_validations.rb, line 31
def maximum_value
  (1 << column.limit * 8 - 1) - 1
end
minimum_value() click to toggle source
# File lib/validate_me/integer_limit_validations.rb, line 35
def minimum_value
  -(maximum_value + 1)
end