2016-08-26 65 views
0

如何獲得按日期排列的數組對象?我給大家舉一個例子:按日期獲取總物件數?

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.all'的結果 – Cojones

回答

0

你可以做這樣的事情(取決於數據庫您正在使用):

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

這應該返回一個帶Date對象作爲鍵的散列,並將相應的計數作爲val UE的。

它完成了數據庫端的所有魔法。下面是相應的SQL:

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

另一種做法可能是:

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

我建議這種方法,因爲我能想象一個用例,你將需要執行相同的數據集的不同操作User.all

只是一個想法