按日期获取对象总数?

时间:2016-08-26 08:36:11

标签: ruby-on-rails activerecord hash

如何按日期获取一组数量的对象?让我举个例子:

User.all

id name        created_at
1  Pedro       2016-07-24
2  Juan        2016-07-24
3  John        2016-07-25
4  Matthew     2016-07-27
5  Peter       2016-07-27
6  Jim         2016-07-29
7  Alex        2016-07-30
8  Lawrence    2016-07-30

将返回

{ 
  2016-07-24 => 2,
  2016-07-25 => 3,
  2016-07-26 => 3,
  2016-07-27 => 5,
  2016-07-28 => 5,
  2016-07-29 => 6,
  2016-07-30 => 8
}

2 个答案:

答案 0 :(得分:0)

您可以执行以下操作(取决于您使用的数据库):

User.group('date(created_at)').count

这应该返回一个哈希,其中Date-objects为键,相应的值为值。

它完成了数据库方面的所有魔力。这是等效的SQL:

SELECT COUNT(*) FROM users AS count, date(created_at) GROUP BY date(created_at);

答案 1 :(得分:0)

另一种方法可能是:

User.all.each_with_object(Hash.new(0)) { |item, count| count[item[:created_at]] += 1 }

我建议使用这种方法,因为我可以想象一个用例,您需要对User.all的同一数据集执行不同的操作。

只是一个想法