Rai*_*ana 16 ruby sum ruby-on-rails-4
我payments.sum(&:price)在我的Rails应用程序(4.1.2)中使用.自从我从Ruby 1.9.3更新到2.1.2后,我收到了以下错误:
wrong number of arguments (1 for 2..3)
Run Code Online (Sandbox Code Playgroud)
这些变体有效:
payments.map(&:price).sum
payments.to_a.sum(&:price)
Run Code Online (Sandbox Code Playgroud)
我是否必须重写我的代码或者我错过了什么?谢谢!
Uri*_*ssi 18
从文档:
SUM(*参数)
计算给定列的值的总和.返回的值与列的数据类型相同,如果没有行,则返回0.有关选项,请参阅计算示例.
Run Code Online (Sandbox Code Playgroud)Person.sum(:age) # => 4562
看来你的代码应该没有&:
payments.sum(:price)
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您在 Rails 4.0 中运行过它,您将收到以下弃用警告:
弃用警告:不推荐使用块调用 #sum 并将在 Rails 4.1 中删除。如果要对元素数组执行总和计算,请使用“to_a.sum(&block)”。
这是指方法 Relation#sum在给定块时以前在 Rails 3.2 中工作。
正如其他人所回答的那样,您要么需要使用payments.sum(:price)if price 是数据库列,要么使用payments.to_a.sum(&:price)ifprice是一个实例方法。
| 归档时间: |
|
| 查看次数: |
3254 次 |
| 最近记录: |