6
NoMethodError: undefined method `to_d' for nil:NilClass 

これは他の「to_」と矛盾しているようです

たとえば、Rails 3.2.14 と ruby​​ 1.9.3p362 の場合:

1.9.3p362 :055 > nil.to_f
 => 0.0 
1.9.3p362 :056 > nil.to_d
NoMethodError: undefined method `to_d' for nil:NilClass
1.9.3p362 :057 > nil.to_s
 => "" 
1.9.3p362 :058 > nil.to_i
 => 0 

つまり、大きな 10 進数に変換したい場合は、最初に値が nil でないことを確認し、とにかく 0 の値を割り当てる必要があることを意味します...だから...これを一貫させるための最良の方法についてコメントします? これをバグと見なす必要がありますか?

4

4 に答える 4

2

また (nil.try(:to_d) || 0) + value

于 2017-07-06T06:30:02.780 に答える
0

それが必要な場合は、最初に文字列に変換する方がよいでしょう

BigDecimal.new(amount.to_s) 
于 2017-06-06T18:04:21.010 に答える