我将货币值存储在我的数据库中作为Decimal类型,并且对于它们在rails中映射到BigDecimal并因此使用科学记数法打印的事实感到不满意。 (是的,我可能应该存储整数美分。)
控制台命令MyModel.first
在这个猴子补丁之后输出十进制价格,如常规浮点数:
class BigDecimal
def inspect
to_s
end
end
但是,在这个猴子补丁之后,控制台命令puts MyModel.first.to_yaml
不会将十进制价格作为常规浮动输出:
class BigDecimal
def to_yaml
to_s
end
end
...但是puts BigDecimal.new(1).to_yaml
符合我的期望。
通过ruby和rails源代码库我看起来并不是很舒服,但我已经尝试过,但在上面的第二种情况下无法找到输出格式的位置。
我应该在哪儿看?我错过了什么?