Module: Validations::InstanceMethods

Defined in:
lib/moduls/validations.rb

Instance Method Summary collapse

Instance Method Details

#out_of_range?(value, range) ⇒ Boolean

Returns:

  • (Boolean)


56
57
58
# 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) ⇒ Boolean

Returns:

  • (Boolean)


48
49
50
51
52
53
54
# 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!Object



19
20
21
22
23
24
25
26
# 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) ⇒ Object

Raises:



44
45
46
# 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) ⇒ Object

Raises:



40
41
42
# 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) ⇒ Object

Raises:



28
29
30
# 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) ⇒ Object

Raises:



32
33
34
# 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) ⇒ Object

Raises:



36
37
38
# 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