Class: ACH::Record::Base
- Inherits:
-
Object
- Object
- ACH::Record::Base
- Includes:
- Constants, Validations
- Defined in:
- lib/ach/record/base.rb
Overview
Base class for all record entities (e.g. ACH::File::Header
, ACH::File::Control
, ACH::Record::Entry
, others). Any record being declared should specify its fields, and optional default values. Except for ACH::Record::Dynamic
, any declared field within a record should have corresponding rule defined under ACH::Rule::Formatter
.
Example
class Addenda < Record
fields :record_type,
:addenda_type_code,
:payment_related_info,
:addenda_sequence_num,
:entry_details_sequence_num
defaults :record_type => 7
end
addenda = ACH::Addenda.new(
:addenda_type_code => '05',
:payment_related_info => 'PAYMENT_RELATED_INFO',
:addenda_sequence_num => 1,
:entry_details_sequence_num => 1 )
addenda.to_s! # => "705PAYMENT_RELATED_INFO 00010000001"
Direct Known Subclasses
Batch::Control, Batch::Header, File::Control, File::Header, Addenda, Dynamic, Entry, Tail
Defined Under Namespace
Classes: EmptyFieldError, UnknownFieldError
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
-
.defaults(default_values = nil) ⇒ Object
Sets default values for fields.
-
.fields(*field_names) ⇒ Object
Specifies fields of the record.
- .from_s(string) ⇒ Object
Instance Method Summary collapse
- #[]=(name, val) ⇒ Object
-
#fields ⇒ Object
Returns a hash where key is field’s name and value is field’s value.
-
#initialize(fields = {}, &block) ⇒ Base
constructor
A new instance of Base.
-
#to_s! ⇒ Object
Builds a string from record object.
Methods included from Validations
Constructor Details
#initialize(fields = {}, &block) ⇒ Base
Returns a new instance of Base.
77 78 79 80 81 82 83 |
# File 'lib/ach/record/base.rb', line 77 def initialize(fields = {}, &block) defaults.each do |key, value| self.fields[key] = Proc === value ? value.call : value end self.fields.merge!(fields) instance_eval(&block) if block end |
Class Method Details
.defaults(default_values = nil) ⇒ Object
Sets default values for fields. See class description for example
56 57 58 59 |
# File 'lib/ach/record/base.rb', line 56 def self.defaults(default_values = nil) return @defaults if default_values.nil? @defaults = default_values.freeze end |
.fields(*field_names) ⇒ Object
Specifies fields of the record. Order is important. All fields must be declared in ACH::Formatter RULES
. See class description for example
49 50 51 52 53 |
# File 'lib/ach/record/base.rb', line 49 def self.fields(*field_names) return @fields if field_names.empty? @fields = field_names @fields.each{ |field| define_field_methods(field) } end |
.from_s(string) ⇒ Object
72 73 74 75 |
# File 'lib/ach/record/base.rb', line 72 def self.from_s(string) field_matcher_regexp = Formatter.matcher_for(fields) new Hash[*fields.zip(string.match(field_matcher_regexp)[1..-1]).flatten] end |
Instance Method Details
#[]=(name, val) ⇒ Object
103 104 105 |
# File 'lib/ach/record/base.rb', line 103 def []=(name, val) fields[name] = val end |
#fields ⇒ Object
Returns a hash where key is field’s name and value is field’s value.
94 95 96 |
# File 'lib/ach/record/base.rb', line 94 def fields @fields ||= {} end |
#to_s! ⇒ Object
Builds a string from record object.
86 87 88 89 90 91 |
# File 'lib/ach/record/base.rb', line 86 def to_s! self.class.fields.map do |name| raise EmptyFieldError.new(name, self) if @fields[name].nil? Formatter.format name, @fields[name] end.join end |