【问题标题】:How to Group by Day with Ruport / Ruby on Rails?如何使用 Ruport / Ruby on Rails 按天分组?
【发布时间】:2009-09-14 20:41:45
【问题描述】:

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

如果 Ruport 没有意义,我愿意接受其他/更好的方法来进行相同的分组。

【问题讨论】:

  • 您是否决定为此不使用 ruport?我希望能够用 ruport 做到这一点

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


【解决方案1】:

没有报告:

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

【讨论】:

  • 这对我现在帮助很大。谢谢!我希望我能再投票几次。
【解决方案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') }

但不知道性能。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-15
      • 2014-08-30
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 2013-07-06
      • 2014-10-08
      相关资源
      最近更新 更多