DigitalOpera::Banker - noiseunion/do-toolbox GitHub Wiki

The Banker is a Concern that we use to handle managing the conversion of dollars to cents and back.

Usage

# app/models/order.rb
class Order
  include Mongoid::Document
  include Mongoid::Timestamps
  include DigitalOpera::Banker

  ## Define our currency fields
  currency_fields :total

  ## Fields -----------------------------------
  field :total_in_cents, type: Integer, default: 0
end

The Banker Concern gives you the class method currency_fields which accepts a list of all currency fields in your model. The convention assumes that your currency fields in the database are stored in cents and named accordingly. So if we have a total attribute, the Banker will look for a field named total_in_cents to exist in your model.

Example
# Using the class described above we can set the value using either of the banker controlled fields
order = Order.first
order.total_in_cents = 1000
puts order.total
# => "10.00"

order.total = "49.99"
puts order.total_in_cents
# => 4999

Supported ORMs

There isn't anything too special about this guy, so it "should" work pretty well regardless of your ORM, but it has been tested using both ActiveRecord and Mongoid.