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 =
Maps error-code symbols to their exception classes; unmapped codes default to InvalidFormatError.
{ invalid_check_digit: InvalidCheckDigitError, invalid_prefix: InvalidStructureError, invalid_category: InvalidStructureError, invalid_group: InvalidStructureError, invalid_attribute: InvalidStructureError, invalid_bban: InvalidStructureError, invalid_date: InvalidStructureError, invalid_country: InvalidStructureError }.freeze
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.
Instance Method Details
#errors ⇒ Errors
Returns an Errors object with error codes and human-readable messages.
76 77 78 79 80 |
# File 'lib/sec_id/concerns/validatable.rb', line 76 def errors return @errors if defined?(@errors) @errors = Errors.new(error_codes.map { |code| build_error(code, (code)) }) end |
#valid? ⇒ Boolean
61 62 63 |
# File 'lib/sec_id/concerns/validatable.rb', line 61 def valid? valid_format? end |
#validate ⇒ self
Eagerly triggers validation and caches errors.
68 69 70 71 |
# File 'lib/sec_id/concerns/validatable.rb', line 68 def validate errors self end |
#validate! ⇒ self
Validates and returns self if valid, raises an exception otherwise.
86 87 88 89 90 91 |
# File 'lib/sec_id/concerns/validatable.rb', line 86 def validate! return self if valid? detail = errors.details.first raise self.class.error_class_for(detail[:error]), detail[:message] end |