I’m working on a small application in which currency – specifically USD – will be stored in a MySQL database.

Because Rails supports a variety of number formats, it’s not completely obvious which is the best to use when storing monetary values.

Using a decimal with a certain level of precision seems to be the most scalable option.

add_column :item, :price, :decimal, :precision => 8, :scale => 2

Here, I’m adding a price column with the type of decimal to the item table. The precision value is somewhat arbitrary as it’s based on the total number of digits your field will support.┬áThe scale attribute is the number of digits that will be available to the right of the decimal points.

Finally, Rails’ number_to_currency helper works will with this particular column type for easily formatting data in the view.