Class: ACH::Record::Dynamic
Overview
Descendants of ACH::Record::Dynamic
class are the only records allowed to have previously undefined fields. However, each new field definition requires a rule string to be passed. UndefinedFormatError
will be raised otherwise. If the field has already been defined, and a new rule string is passed, a DuplicateFormatError
is raised.
Example
class CustomHeader < ACH::Record::Dynamic
request_type '<-9-' => '$$ADD ID='
remote_id '<-8-'
file_type '<-6-', 'NWFACH'
end
This example declares a CustomHeader
record type with following fields:
-
request_type
, defined by rule ‘<-9-’ with a default
value of ‘$$ADD ID=’
-
remote_id
with no default value -
file_type
with default value of ‘NWFACH’
Note: passing two arguments to method call is equivalent to passing a hash with a single key-value pair.
Defined Under Namespace
Classes: DuplicateFormatError, UndefinedFormatError
Constant Summary
Constants included from Constants
Constants::BATCH_ADDENDA_RECORD_TYPE, Constants::BATCH_CONTROL_RECORD_TYPE, Constants::BATCH_ENTRY_RECORD_TYPE, Constants::BATCH_HEADER_RECORD_TYPE, Constants::BLOCKING_FACTOR, Constants::FILE_CONTROL_RECORD_TYPE, Constants::FILE_HEADER_RECORD_TYPE, Constants::FORMAT_CODE, Constants::RECORD_SIZE, Constants::ROWS_DELIMITER
Class Method Summary collapse
Methods inherited from Base
#[]=, defaults, fields, #fields, from_s, #initialize, #to_s!
Methods included from Validations
Constructor Details
This class inherits a constructor from ACH::Record::Base
Class Method Details
.method_missing(field, *args) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/ach/record/dynamic.rb', line 40 def self.method_missing(field, *args) format, default = args.first.is_a?(Hash) ? args.first.first : args unless format =~ Formatter::Rule::RULE_PARSER_REGEX default, format = format, nil end unless Formatter.defined? field raise UndefinedFormatError.new(field) if format.nil? Formatter.define field, format else raise DuplicateFormatError.new(field) if format end define_field_methods(field) (@fields ||= []) << field (@defaults ||= {})[field] = default if default end |