Module: Validations::InstanceMethods
- Defined in:
- lib/moduls/validations.rb
Instance Method Summary collapse
- #out_of_range?(value, range) ⇒ Boolean
- #valid_length?(count, length) ⇒ Boolean
- #validate! ⇒ Object
- #validate_inclusion(value, name, array) ⇒ Object
- #validate_length(value, name, length) ⇒ Object
- #validate_presence(value, name) ⇒ Object
- #validate_range(value, name, range) ⇒ Object
- #validate_type(value, name, type_class) ⇒ Object
Instance Method Details
#out_of_range?(value, range) ⇒ 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
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
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
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
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
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
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 |