Ruby on rails 如何映射和分组数组

Ruby on rails 如何映射和分组数组,ruby-on-rails,Ruby On Rails,我正在创建一个Rails 3.2 web应用程序,在这个应用程序中我收集并显示时间报告。 我有一个如下的查询: @reports = Timereport.where("backend_user_id = ?", user.id).group("id, date(created_at)").created_between(from, to).order("date(created_at) desc").select("id, date (created_at) as date, sum(tota

我正在创建一个Rails 3.2 web应用程序,在这个应用程序中我收集并显示时间报告。 我有一个如下的查询:

@reports = Timereport.where("backend_user_id = ?", user.id).group("id, date(created_at)").created_between(from, to).order("date(created_at) desc").select("id, date (created_at) as date, sum(total_time) as seconds")
<% @reports.each do |report| %>
 <%= report[:date] %>
 <%= report[:seconds] %>
<% end %>
哪个输出:

[#<Timereport id: 370>, #<Timereport id: 367>, #<Timereport id: 368>, #<Timereport id: 369>]
换句话说就是这样。我需要这个结果:

[["2014-06-18", "3600"], ["2014-06-17", "10800"]]

如何实现这一点?

您可以使用下一个代码:

@reports.group_by { |x| x.date }.map { |date, record|
  [date, record.map(&:seconds).map(&:to_i).reduce(:+).to_s]
}
[["2014-06-18", "3600"], ["2014-06-17", "10800"]]
@reports.group_by { |x| x.date }.map { |date, record|
  [date, record.map(&:seconds).map(&:to_i).reduce(:+).to_s]
}