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