我想计算2个日期之间的平均时间(以天为单位)。我想知道每个用户加入后的天数,并得到平均值。
(Date.today - User.first.created_at.to_date).to_i
对于给定的用户非常有效。现在我想遍历所有用户并获取平均值。如何做到这一点呢?
你可以试试:
User.all.map{|u| (Date.today - u.created_at.to_date).to_i}.sum/User.count
或者你可以试试这个:
User.all.sum { |user| (Time.now - user.created_at) / 1.day }.to_i / User.count
如果你像这样扩展Ruby的Array
:
class Array
def avg(&block)
sum(&block).to_i / count
end
end
你可以做一个简洁的版本:
User.all.avg { |user| (Time.now - user.created_at) / 1.day }