如何使用Ruport / Ruby on Rails进行分组?

时间:2009-09-14 20:41:45

标签: mysql ruby-on-rails ruby reporting ruport

我正在尝试评估Ruport在我的Rails应用程序中使用,但我不确定如何使用日期/时间戳记拍摄一系列记录,并通过Ruport的分组功能对它们进行分组。

如果Ruport没有意义,我会接受其他/更好的方法来做同样的分组。

3 个答案:

答案 0 :(得分:6)

没有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_monthat_beginning_of_week等,具体取决于您要分组的内容。

答案 1 :(得分:2)

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') }

虽然不知道表现。

答案 2 :(得分:1)

我建议将@ posts.group_by函数移动到控制器而不是视图中。