たとえば、過去7日間でどれだけのログが生成されたか知りたい場合。
> today = Time.current => Tue, 23 Aug 2022 15:32:59.608734000 JST +09:00 > seven_days_ago = today.ago(7.days).beginning_of_day => Tue, 16 Aug 2022 00:00:00.000000000 JST +09:00 > SomeLog.group('date(created_at)').where(created_at: seven_days_ago..(today.end_of_day)).order('date(created_at) ASC')
group('date(created_at)')
で日付ごとにGROUP BY
してるwhere
で過去7日間を表現してる- 本日を含むので実質8日間になってるがこれは各々カスタマイズしてもろて
order
をつけないと日付の順番がバラバラになるのでつけてる
もっと良い書き方があるかもしれない。