I’m always confused when using decimal
in a Rails migration. Normally I need to store a value that has 2 or 3 numbers behind the comma (or dot), or decimals.
Let’s say you have a Product
model with a discount_percentage
attribute. This attribute is currently an integer, only allowing non-decimal values. To allow 2 digit decimal values (e.g. 12.54
), you can mak the following migration:
change_column :products, :discount_percentage, :decimal, precision: 5, scale: 2
This will allow you to store values like 80.00
, 99.99
and 100.00
. There are five digits in the entire number and of those five, two decimals.
It’s not necessary so specify precision
and scale
as your database will then allow any decimal value it can store.
Read more about the decimal
data type in PostgreSQL here: http://www.postgresql.org/docs/9.1/static/datatype-numeric.html