Skip to content

nestegg/acts_as_decimal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ActsAsDecimal
=============

acts_as_decimal provides a solution for storing decimal values in
an ActiveRecord model as an integer.  Unlike some similar plugins, this one
is not specific to currency and allows you to specify the number of digits
to the right of the decimal point.

  Install plugin:  ./script/plugin install svn://svn.projects.nestegg.com/acts_as_decimal

  Test plugin: rake test:plugins PLUGIN=acts_as_decimal

Add integer columns:

  create_table :holdings do |t|
    t.column :ticker, :string, :limit => 8
    t.column :num_shares, :integer
    t.column :share_price, :integer
    t.column :commission, :integer
    t.column :basis, :integer
  end

In your model:

  class Holding < ActiveRecord::Base

    acts_as_decimal :share_price, :precision => 4
    acts_as_decimal :commission, :basis, :precision => 2

  end

share_price, commission and basis will now return BigDecimal objects and assignments
will be appropriatedly adjusted and stored as an integer.

Note: It should be obvious that by storing the decimal as an integer we are trading
range for precision.  You need to take this into account when designing your database
model.  For instance, if your database has 32-bit integers, it can represent numbers
of the range +/- 2**31 or approximately +/- 2,000,000,000.  If we are storing a decimal
number with 2 digits to the right of the decimal point in that same integer, the range
is decreased to +/- 20,000,000.

About

A rails plugin to store decimal numbers in the database as integers.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages