Railsアプリで使用するためにRuportを評価しようとしていますが、日付/タイムスタンプ付きの一連のレコードを取得し、Ruportのグループ化機能を使用してそれらをグループ化する方法がわかりません。
Ruportが意味をなさない場合、私はこれと同じグループ化を行うための他の/より良い方法を受け入れています。
Railsアプリで使用するためにRuportを評価しようとしていますが、日付/タイムスタンプ付きの一連のレコードを取得し、Ruportのグループ化機能を使用してそれらをグループ化する方法がわかりません。
Ruportが意味をなさない場合、私はこれと同じグループ化を行うための他の/より良い方法を受け入れています。
ルポートなし:
<% @posts.group_by {|p| p.created_at.at_beginning_of_day }.each do |day, posts| %>
<h2><%= day.strftime("something...") %></h2>
<% posts.each do |post| %>
do stuff with `post`.
<% end %>
<% end %>
グループ化する対象に応じてat_beginning_of_month
、などを使用します。at_beginning_of_week
Ruport には、テーブルに新しい列を追加するメソッドが含まれています。したがって、タイムスタンプ ソースからの日付ごとのグループ化は、次のように行うことができます。
@table.add_column('created_at_date') { |r| r.created_at.to_date }
created_at_date_grouping = Grouping(@table, :by => "created_at_date")
もちろん、この方法を使用して、Google Analytics などのより興味深いレポートを生成することもできます。
@table.add_column('day_of_week') { |r| r.created_at.strftime('%a') }
@table.add_column('hour_of_day') { |r| r.created_at.strftime('%H') }
性能については不明ですが。