module Bank::Model

Public Class Methods

included(base) click to toggle source
# File lib/bank/model.rb, line 24
def self.included(base)
  base.define_singleton_method(:config) do
    @_config ||= Bank::Model::Config.new(self)
  end
end
new(attrs = {}) click to toggle source
# File lib/bank/model.rb, line 30
def initialize(attrs = {})
  set(attrs)
  _defaults.reject { |key, _| get(key) }.each { |key, val| set(key, val) }
end

Public Instance Methods

==(other) click to toggle source
# File lib/bank/model.rb, line 55
def ==(other)
  other.is_a?(self.class) && other.to_hash == to_hash
end
get(attr) click to toggle source
# File lib/bank/model.rb, line 41
def get(attr)
  instance_variable_get(:"@#{attr}")
end
set(attr, value = nil) click to toggle source
# File lib/bank/model.rb, line 45
def set(attr, value = nil)
  if attr.is_a?(Hash)
    attr.each { |key, value| set(key, value) }
  else
    public_send(:"#{attr}=", value)
  end

  return self
end
to_hash() click to toggle source
# File lib/bank/model.rb, line 35
def to_hash
  _fields.reduce({}) do |acc, field|
    acc.merge(field => get(field))
  end
end

Private Instance Methods

_defaults() click to toggle source
# File lib/bank/model.rb, line 65
def _defaults
  self.class.config._defaults
end
_fields() click to toggle source
# File lib/bank/model.rb, line 61
def _fields
  self.class.config._fields
end