2014-12-19 87 views
0

我有5个对象的活动记录如下后WHERE语句

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

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

总和总结5个物体这个心不是工作

@ top_sold.sum(:qty_sold)

在adcance由于大部分

+0

为什么'@ top_sold.sum(:qty_sold)'工作? – Magnuss 2014-12-19 15:43:25

回答

1

.first返回Array,使用limit代替(返回ActiveRecord::Relation)。

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

另一种解决方案是在您的阵列上使用'@ top_sold.foldl(:+)'。这样你仍然可以使用'.first(5)' – PatoBeltran 2014-12-19 05:56:04

0

Array你可以做

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

你试过追加sum到您的查询?

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

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