2016-09-07 99 views
1

我有用戶註冊。我想根據created_at記錄計算每天的記錄數

顯示過去7天的每日註冊數量的圖表我可以使用活動記錄查詢來實現這種分組和計數而不是手動計算通過迭代?

回答

1

使用to_date這將擺脫所有的時間信息,有效地讓你只用幾天。

User.where('created_at >= ?', 1.week.ago).group_by { |u| u.created_at.to_date }.map { |_,v| [_, v.length]}.to_h

,或者,如果你不計較時間部分,你可以這樣做:

User.where('created_at >= ?', 1.week.ago).group(:created_at).count

這將讓你與created_atcount哈希值。

+0

有沒有一種方法可以得到計數? –

+0

'{2016-08-19 13:59:39 UTC => 1,2016-08-19 07:30:24 UTC => 1,2016-08-22 12:37:51 UTC => 1,2016- 08-19 07:23:36 UTC => 1,2016-08-24 08:04:54 UTC => 1}'看起來好像需要時間基礎。任何方式,我可以得到它只是基於日期。我正在使用第二個查詢 –

+1

對於大量記錄來說,這當然是最快的解決方案,因爲分組是在SQL中完成的,而不是取出所有記錄,然後在ruby中進行分組。 –