相关疑难解决方法(0)

我如何按天而不是按日期分组?

好的,我有

 >> list = Request.find_all_by_artist("someBand")
=> [#<Request id: 1, artist: "someBand", song: "someSong", venue: "Knebworth - Stevenage, United Kingdom", showdate: "2011-07-01", amount: nil, user_id: 2, created_at: "2011-01-01 18:14:08", updated_at: "2011-01-01 18:14:09".............
Run Code Online (Sandbox Code Playgroud)

然后

list.group_by(&:created_at).map {|k,v| [k, v.length]}.sort
=> [[Sat, 01 Jan 2011 18:14:08 UTC +00:00, 10], [Sun, 09 Jan 2011 18:34:19 UTC +00:00, 1], [Sun, 09 Jan 2011 18:38:48 UTC +00:00, 1], [Sun, 09 Jan 2011 18:51:10 UTC +00:00, 1], [Sun, 09 Jan 2011 18:52:30 UTC +00:00, 1], [Thu, 10 Feb …
Run Code Online (Sandbox Code Playgroud)

ruby group-by ruby-on-rails ruby-on-rails-3

18
推荐指数
3
解决办法
2万
查看次数

如何使用 Postgres 在 Rails 中按天对记录进行分组

所以我发现了这些问题:

还有这个宝石: https: //github.com/ankane/groupdate

我希望按天对记录进行分组,格式如下:

[
  { "2016-03-16" => [Record1, Record2, Record3] },
  { "2016-03-17" => [Record1, Record2] },
  { "2016-03-18" => [Obj1, Obj2] }
]
Run Code Online (Sandbox Code Playgroud)

我已经能够使用以下代码获得这种格式:

def group_by_criteria
  created_at.to_date.to_s
end

list.group_by(&:group_by_criteria).map {|k,v| { k => v} }
Run Code Online (Sandbox Code Playgroud)

但是,正如其他问题中所解释的,这对于大量记录来说不是很有效,我认为我应该使用数据库中的分组,但我不确定如何获取我正在寻找的格式,我尝试过像这样的东西,但我没有得到我所期望的:

list.order("date_trunc('day', created_at) DESC).map{ |k, v| { k => v }}
Run Code Online (Sandbox Code Playgroud)

如何像这样按天对数据库中的记录进行分组?

postgresql ruby-on-rails

1
推荐指数
1
解决办法
942
查看次数