グラフをプロットして、過去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..
しかし、どちらの解決策も役に立たない。これを最適化されたものにするための提案。