Module: JetSet::Validations
- Defined in:
- lib/jet_set/validations.rb
Overview
Optional validation decorator. Adds validation logic to pure Ruby objects.
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
-
#do_not_validate(*attributes) ⇒ Object
Disables attribute validation for edge cases.
-
#validate! ⇒ Object
The method runs all validations declared in the model.
Class Method Details
.included(base) ⇒ Object
37 38 39 |
# File 'lib/jet_set/validations.rb', line 37 def self.included(base) base.extend(ClassMethods) end |
Instance Method Details
#do_not_validate(*attributes) ⇒ Object
Disables attribute validation for edge cases
32 33 34 35 |
# File 'lib/jet_set/validations.rb', line 32 def do_not_validate(*attributes) @to_skip ||= [] attributes.each { |a| @to_skip << a} end |
#validate! ⇒ Object
The method runs all validations declared in the model
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/jet_set/validations.rb', line 7 def validate! @to_skip ||= [] validations = self.class.class_variable_defined?(:@@validations) ? self.class.class_variable_get(:@@validations) : {} attributes = validations.keys - @to_skip invalid_items = [] attributes.each do |attribute| attribute_validations = validations[attribute] || [] error = nil attribute_validations.each do |validation| value = instance_variable_get("@#{attribute}") if validation[:func].call(value) == false error = validation[:message] break end end invalid_items << {"#{attribute}": error} if error end raise ValidationError.new("#{self.class.name} is invalid", invalid_items) if invalid_items.length > 0 end |