在 BigDecimal 上定义检查的缺点

Disadantages of defining inspect on BigDecimal

我在Rails中使用小数类型来存储货币。

但是,我厌倦了不断看到这样的结果:

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

当我使用 Rails 控制台时。

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

有人可以保证或警告不要使用这个猴子补丁吗?

Ruby 文档建议为用户定义的 类 覆盖 inspect。它 returns 一个人类可读的字符串。任何其他代码都不应依赖 inspect 的功能。因此,如果您决定它对您来说更易于阅读,那么如果您更改默认行为就可以了。只要您不将其包含在 gem 或外国开发人员将使用的其他代码中。

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

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

inspect"Returns debugging information about the value as a string"。

apidock.com/ruby/BigDecimal/inspect

我怀疑覆盖 调试 输出格式会破坏任何东西。我也是 monkey-patching to_s