【发布时间】:2014-07-01 21:45:47
【问题描述】:
这个函数...
class Invoice < ActiveRecord::Base
def self.open_subtotal
sum{ |i| i.open_amount / (1.00 + i.tax_rate / 100.00) }
end
end
...在 Rails 4.0.2 中给我一个错误:
弃用警告:不推荐使用块调用#sum,并将在 Rails 4.1 中删除。如果要对元素数组执行求和计算,请使用
to_a.sum(&block)。
当我在sum 之前添加to_a 时,我收到undefined local variable or method to_a 错误。
正确的写法是什么?
【问题讨论】:
-
你在总结什么?
-
你为什么要把钱存起来? stackoverflow.com/questions/3730019/…
-
@MichalSzyndel:实际上我所有的货币值都保存为
decimals在数据库中。我上面的代码会搞砸吗? -
每次你写
0.4它都是Ruby中的一个浮点数,所以是的,它会搞砸。如果您必须乘以税值,请使用BigDecimal.new来实例化税率。 -
@MichalSzyndel:是的,会的。谢谢你提醒我。
标签: ruby-on-rails ruby activerecord