Ruby BigDecimal:增加数据库中保存的初始数字

时间:2015-06-16 14:57:07

标签: ruby-on-rails ruby bigdecimal

我在Rails 4应用上面临Ruby BigDecimal的问题。

我在Thing模型中有一个“price”属性,该类是BigDecimal。每当我创建或更新Thing时,我都希望将“price”属性严格保存为两位小数(例如“0.00”,“10.00”,“10.10”,“10.01”)。

但默认情况下,如果不需要两个十进制数字,它只会保存一个十进制数字。这是我插入的内容以及它当前保存的内容:

"0" => "0.0" (instead of "0.00")
"10" => "10.0" (instead of "10.00")
"10.1" => "10.1" (instead of "10.10")
"10.01" => "10.01" (OK)

我不只是想显示带有两位小数的“price”属性(可以使用"%.2f" % price来完成),我想在我的数据库中保存带有两位小数的“price”属性。有没有办法呢?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

在我看来,你所描述的纯粹是出于展示目的。我不知道如何将小数保存到具有特定小数位数的数据库,除非将它们保存为字符串,否则实际上不会增加​​精度。

在我看来,你最好在Thing模型上创建一个方法,它会以你想要的方式返回价格。