在BigDecimal上定义检查的缺点

时间:2015-09-18 14:54:52

标签: ruby-on-rails ruby bigdecimal monkeypatching rails-console

我在Rails中使用十进制类型来存储货币。

然而,我厌倦了不断看到如下结果:

nominal_amount: #<BigDecimal:7f919884b648,'0.7E6',9(18)>

当我使用Rails控制台时。

我可以通过在inspect上将def inspect; to_s; end定义为BigDecimal来解决此问题,但我担心这会导致特殊错误。

任何可以保证或警告这个猴子补丁的人?

3 个答案:

答案 0 :(得分:2)

Ruby Doc建议覆盖用户定义类的inspect。它返回一个人类可读的字符串。没有其他代码应该依赖inspect的功能。因此,如果您决定,它更易于人类阅读 - 如果您更改默认行为,则可以。只要您不将它包含在gem或其他代码中,外国开发人员就会使用它。

http://ruby-doc.org/core-2.1.1/Object.html#method-i-inspect

答案 1 :(得分:1)

嗯,如果你把它放在初始化器中并且只在开发模式下运行......我没有看到任何风险。有可能其他人的代码在BigDecimal.inspect上重复返回一个对象字符串。我会说它只是一种开发修改。

答案 2 :(得分:1)

inspect“以字符串形式返回调试有关该值的信息”。

请参阅apidock.com/ruby/BigDecimal/inspect

我怀疑重写调试输出格式会破坏任何内容。我正在将它修补到to_s