在where语句之后总结5个对象

时间:2014-12-19 05:49:42

标签: ruby-on-rails ruby ruby-on-rails-4

我有5个对象的活动记录,如下所示

@top_sold = Photo.where(photographer_id: @photog).order('qty_sold DESC').first(5)

我想知道所有5张照片的qty_sold总和

这不起作用

@ top_sold.sum(:qty_sold)

非常感谢adcance

3 个答案:

答案 0 :(得分:1)

.first返回Array,改为使用limit(返回ActiveRecord::Relation)。

@top_sold = Photo.where(photographer_id: @photog).order('qty_sold DESC').limit(5)

答案 1 :(得分:0)

Array你可以做

@top_sold.map(:qty_sold).inject(:+)

答案 2 :(得分:0)

您是否尝试在查询中附加sum

@top_sold = Photo.where(photographer_id: @photog)
                 .order('qty_sold DESC').first(5).sum('qty_old')

如果您需要原始结果集,那么@Nithin回答就是您想要做的。