鉴于我将User.attachments和Attachment.visits作为具有数字计数的整数。
如何轻松统计该用户所有图片的所有访问次数?
答案 0 :(得分:18)
user.attachments.sum(:visits)
这应该生成一个有效的SQL查询,如下所示:
SELECT SUM(attachments.visits) FROM attachments WHERE attachments.user_id = ID
答案 1 :(得分:14)
user.attachments.map{|a| a.visits}.sum
答案 2 :(得分:5)
还有inject
:
user.attachments.inject(0) { |sum, a| sum + a.visits }
人们通常(并且非常正确地)讨厌inject
,但由于已经提到了实现这一目标的另外两种主要方式,我想我也可以把它扔出去。 :)
答案 3 :(得分:2)
以下适用于普通旧Ruby对象,我怀疑以下内容比使用count += a.visits
略快,而且还有一个表情符号:
user.attachments.map(&:visits).inject(:+)