Module: SecID::Validatable
- Included in:
- Base
- Defined in:
- lib/sec_id/concerns/validatable.rb
Overview
Provides validation methods for identifier types.
Including classes should override #valid_format? and optionally #detect_errors for type-specific validation.
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- ERROR_MAP =
{ invalid_check_digit: InvalidCheckDigitError, invalid_prefix: InvalidStructureError, invalid_category: InvalidStructureError, invalid_group: InvalidStructureError, invalid_bban: InvalidStructureError, invalid_date: InvalidStructureError }.freeze
Class Method Summary collapse
- .included(base) ⇒ Object private
Instance Method Summary collapse
-
#errors ⇒ Errors
Returns an Errors object with error codes and human-readable messages.
- #valid? ⇒ Boolean
-
#validate ⇒ self
Eagerly triggers validation and caches errors.
-
#validate! ⇒ self
Validates and returns self if valid, raises an exception otherwise.
Class Method Details
.included(base) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
19 20 21 |
# File 'lib/sec_id/concerns/validatable.rb', line 19 def self.included(base) base.extend(ClassMethods) end |
Instance Method Details
#errors ⇒ Errors
Returns an Errors object with error codes and human-readable messages.
73 74 75 76 77 |
# File 'lib/sec_id/concerns/validatable.rb', line 73 def errors return @errors if defined?(@errors) @errors = Errors.new(error_codes.map { |code| build_error(code, (code)) }) end |
#valid? ⇒ Boolean
58 59 60 |
# File 'lib/sec_id/concerns/validatable.rb', line 58 def valid? valid_format? end |
#validate ⇒ self
Eagerly triggers validation and caches errors.
65 66 67 68 |
# File 'lib/sec_id/concerns/validatable.rb', line 65 def validate errors self end |
#validate! ⇒ self
Validates and returns self if valid, raises an exception otherwise.
83 84 85 86 87 88 |
# File 'lib/sec_id/concerns/validatable.rb', line 83 def validate! return self if valid? detail = errors.details.first raise self.class.error_class_for(detail[:error]), detail[:message] end |