Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Allows you to enter a '$' in fields stored as decimal but are actually currency types
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.



There's a problem in ActiveRecord.  Let's say you have a field in a table that's supposed to be money, for example:

add_column :products, :price, :decimal

and you have an entry form on your website for admins to add products.  Without even thinking, they will likely type the price with a dollar sign ('$').  If you follow the principal of least surprise, you will need to support this scenario.  However, since ActiveRecord interprets the type as a decimal (since that's how it is in the database), you will get a silent fail in which all of your prices are 0!  This is because all characters after the first non-number are interpreted as 0.  That's where acts_as_currency comes in.  Add it to your model and pass in any price fields, and they will all be able to take a '$'.  Hope you enjoy!  If you have any questions, please feel free to contact me at


This project is hosted on github.  There are a few options for installing it.

#1 Using git-rails gem
	- This is by far the easiest method.  Install git-rails by issuing:
			sudo gem install git-rails (Windows: gem install git-rails)
			git-rails install git://

#2 Using git-clone
	- This method requires that you have Git installed (might as well do it, it's a great alternative to svn)
	- Assumes your current working directory is your rails app root
	cd vendor/plugins
	git-clone git:// acts_as_currency
#3 Source Tarball
	- If you cannot access Git at all, use this link to download the source tarball
	cd vendor/plugins
	mkdir acts_as_currency && cd acts_as_currency
	tar xvcf faithfulgeek-acts-as-currency-master.tar.gz

Troubles?  Let me know!


class Product < ActiveRecord::Base
	acts_as_currency :price, :discount_price

For an example of the problem and how acts_as_currency solves it, please see specs/acts_as_currency_spec.rb.  If you have rspec installed you can play around with different values and see how it all works.

Copyright (c) 2008 Joe Fiorini, released under the MIT license
Something went wrong with that request. Please try again.