module Validations::InstanceMethods

Public Instance Methods

out_of_range?(value, range) click to toggle source
# File lib/moduls/validations.rb, line 56
def out_of_range?(value, range)
  value.digits.reverse.any? { |number| !range.include?(number) }
end
valid_length?(count, length) click to toggle source
# File lib/moduls/validations.rb, line 48
def valid_length?(count, length)
  if length.instance_of?(Integer)
    count == length
  elsif length.instance_of?(Range)
    length.member?(count)
  end
end
validate!() click to toggle source
# File lib/moduls/validations.rb, line 19
def validate!
  @validates = self.class.instance_variable_get(:@validates)
  @validates.each do |validate|
    value = instance_variable_get("@#{validate[:variable]}")
    name = validate[:variable].capitalize
    send("validate_#{validate[:type]}", value, name, *validate[:conditional_value])
  end
end
validate_inclusion(value, name, array) click to toggle source
# File lib/moduls/validations.rb, line 44
def validate_inclusion(value, name, array)
  raise InclusionError, "#{name} must be in #{array.join(', ')}" unless array.include?(value)
end
validate_length(value, name, length) click to toggle source
# File lib/moduls/validations.rb, line 40
def validate_length(value, name, length)
  raise LengthError, "#{name} must be #{length} characters" unless valid_length?(value.to_s.split('').count, length)
end
validate_presence(value, name) click to toggle source
# File lib/moduls/validations.rb, line 28
def validate_presence(value, name)
  raise PresenceError, "#{name} can't be blank" if value.to_s.empty?
end
validate_range(value, name, range) click to toggle source
# File lib/moduls/validations.rb, line 32
def validate_range(value, name, range)
  raise OutOfRangeError, "#{name} must be in #{range}" if out_of_range?(value, range)
end
validate_type(value, name, type_class) click to toggle source
# File lib/moduls/validations.rb, line 36
def validate_type(value, name, type_class)
  raise ClassTypeError, "#{name} must be an instance of #{type_class} class" unless value.instance_of? type_class
end