module AttrStatements::ErrorManager
Attributes
errors[W]
Public Class Methods
included(base)
click to toggle source
# File lib/attr_statements/error_manager.rb, line 15 def included(base) base.class_eval do extend ActiveModel::Naming extend ActiveModel::Translation end end
Public Instance Methods
errors()
click to toggle source
# File lib/attr_statements/error_manager.rb, line 23 def errors @errors ||= ActiveModel::Errors.new(self) end
valid?()
click to toggle source
# File lib/attr_statements/error_manager.rb, line 27 def valid? errors.clear self.class.attr_statements.each do |statement_key| object = self.class.__send__(:get_statement_object, statement_key) value = get_statement_value(statement_key) validate(object, value) end errors.empty? end
Private Instance Methods
add_error(key, error)
click to toggle source
:reek: FeatureEnvy
# File lib/attr_statements/error_manager.rb, line 60 def add_error(key, error) errors.add(key, error.message, error.options) end
add_errors(key, arr_errors)
click to toggle source
# File lib/attr_statements/error_manager.rb, line 55 def add_errors(key, arr_errors) arr_errors.each { |error| add_error(key, error) } end
read_attribute_for_validation(attr)
click to toggle source
The following method is needed to be minimally implemented for error management
# File lib/attr_statements/error_manager.rb, line 65 def read_attribute_for_validation(attr) get_statement_value(attr) end
validate(object, value)
click to toggle source
:reek: FeatureEnvy
# File lib/attr_statements/error_manager.rb, line 45 def validate(object, value) Validation::VALIDATORS.each do |error_type| class_type = "AttrStatements::Validations::#{error_type.classify}" validation_class = Object.const_get(class_type) validation = validation_class.new(object) add_errors(object.key, validation.errors) unless validation.valid?(value) end end