【发布时间】:2017-02-02 18:40:40
【问题描述】:
我以前从未遇到过这种情况。我正在使用一个表属性,其值是一个字符串,而不是浮点数/整数。
Model.first.amount => "58.00"
我需要总结所有金额。我习惯了,amount 是一个浮点数,会是:
Model.all.sum(&:amount) => # total value
大胆猜测:
Model.all.sum(&:amount.to_i) # undefined method `to_i' for :amount:Symbol
有没有一种简洁的方法来总结金额?还是把数据库转成float?
【问题讨论】:
-
你需要做强制转换为 SELECT CAST('1234' AS FLOAT)。
-
您不应该使用浮点数来表示货币金额。
-
我知道。我正在使用某人的数据库。他们不会听信改变它。
-
不,我的意思是:您不应该将字符串值转换为浮点数。使用可以处理精确存储的类型,例如 Ruby 中的
BigDecimal或 SQL 中的DECIMAL。 -
啊!感谢那。比如
amount.to_d?
标签: ruby-on-rails ruby postgresql ruby-on-rails-5