如何按日期获取一组数量的对象?让我举个例子:
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
}
答案 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
的同一数据集执行不同的操作。
只是一个想法