module DigitalOpera::Banker::ClassMethods

Public Instance Methods

currency_fields(*args) click to toggle source
# File lib/digital_opera/banker.rb, line 14
def currency_fields(*args)
  args.each do |field_name|
    getter           = field_name.to_sym
    setter           = "#{field_name}=".to_sym
    instance_getter  = "#{field_name}_in_cents".to_sym
    instance_setter  = "#{field_name}_in_cents=".to_sym

    # define the getter method
    send :define_method, getter do
      value = send(instance_getter)
      banker_convert_currency(value, :to_dollars)
    end

    # define the setter method
    send :define_method, setter do |value|
      send instance_setter, banker_convert_currency(value, :to_cents)
    end
  end
end