我正在尝试评估 Ruport 以在我的 Rails 应用程序中使用,但我不确定如何获取一系列带有日期/时间戳的记录并通过 Ruport 的分组功能对它们进行分组。
如果 Ruport 没有意义,我愿意接受其他/更好的方法来进行相同的分组。
我正在尝试评估 Ruport 以在我的 Rails 应用程序中使用,但我不确定如何获取一系列带有日期/时间戳的记录并通过 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') }
虽然不知道性能。
我建议将 @posts.group_by 函数移到控制器而不是视图中。