Skip to content

miletbaker/decimalizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Decimalizer

Create virtual attributes on ActiveRecord models for accessing money values stored in pence/cents as an int as decimals. Rails validation compatible.

Installation

Rails 2.1 or greater

To install the gem, Rails 2.1 or later, add the gem.config line in environment.rb as follows

Rails::Initializer.run do |config|
...
  	config.gem "miletbaker-decimalizer", :lib => "decimalizer", :source => "http://gems.github.com"
...
end

then

sudo rake gems:install

Earlier versions of Rails and other Ruby frameworks

To install the gem

gem sources -a http://gems.github.com
sudo gem install miletbaker-decimalizer

To install as a plugin (Rails)

cd into your Rails root folder
script/plugin install git://github.com/miletbaker/decimalizer.git

Then require the library where needed, i.e. in environment.rb in older rails

require 'decimalizer'

Example

Just include Decimalizer in your model (where required)

class MyModel < ActiveRecord::Base
	include Decimalizer
	decimalize :price # Monetary amount stored in pence / cents

end

Then you will be able to access price as a decimal via the generated virtual attributes

m = MyModel.new
m.price = 2300
m.price_as_decimal	# 23.00

You can pass in the value from a view

m = MyModel.new({price_as_decimal => "45.99"})
m.price 			# 4599

You can also use this virtual attribute with ActiveRecord validations, i.e.

class MyModel < ActiveRecord::Base
	...
	validates_numericality_of :price_as_decimal, :message => "is not a valid price"
	...
end

Copyright (c) 2009 Go Tripod Ltd, released under the MIT license

About

Create virtual attributes on ActiveRecord models for accessing money values stored in pence/cents as an int as decimals. Rails validation compatible.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages