我想绘制一个图表来查看过去 30 天的用户增长情况。
所以它将是一个像这样的数组:(一个增量数组)
[0,100,250,500,1000,1100.....5000,5500]
解决方案 1:一个愚蠢的方法是每天触发查询:
(30.days.ago.to_date..Date.today).map {|date| User.where("Date(created_at) <= ?" , date).count}
但这将触发 30 个查询。
解决方案 2:使用 group by 选项查找所有记录,然后对其进行循环并总结以前的记录。
User.group('Date(created_at)').count
(30.days.ago.to_date..Date.today).map {|date| counts[date] || 0} //and again loop over it
//and now start summing up previous ones elements to get an another array..
但是这两种解决方案都是无用的。将其作为优化建议的任何建议。