rails decimal scale => 2不工作

时间:2015-07-27 09:15:42

标签: ruby-on-rails ruby-on-rails-4

我有一个类似的产品专栏:

character_set_client gdk
character_set_connection gdk
character_set_database gdk
character_set_filesystem binary
character_set_result gdk
character_set_server gdk
character_set_system utf8

并且它保持返回500.0而不是预期的两位小数500.00。然后我尝试通过控制台手动更改产品价格,它只保存1位小数。

t.decimal :price, :precision => 12, :scale => 2

如何获取十进制列以保存并返回两位小数?

1 个答案:

答案 0 :(得分:5)

scale指定在数据库中保留小数点后的位数。保存1.234将四舍五入为1.23500.00将保存为500.00

在Ruby on Rails中,它们将表示为BigDecimalBigDecimal将不知道数据库中使用的格式。如果其值为500.0,则其to_s方法会将其输出为500.0,因为该值足够准确。

要将值格式化为货币,请使用number_to_currency辅助方法。

另见Ruby on Rails: best method of handling currency / moneyDoes Ruby have any number formatting classes?