2016-03-08 33 views
0
Rails中組記錄一天

所以,我已經發現了這些問題:如何使用Postgres的

而且這種寶石:https://github.com/ankane/groupdate

我正在尋找按日格式分組記錄,格式爲l IKE在此:

[ 
    { "2016-03-16" => [Record1, Record2, Record3] }, 
    { "2016-03-17" => [Record1, Record2] }, 
    { "2016-03-18" => [Obj1, Obj2] } 
] 

我已經能夠得到使用此代碼的格式如下:

def group_by_criteria 
    created_at.to_date.to_s 
end 

list.group_by(&:group_by_criteria).map {|k,v| { k => v} } 

然而,在其他問題解釋說,這不是一個大量的記錄非常有效的,我想我應該使用數據庫分組,但我不知道如何獲得我正在尋找的格式,我嘗試了這樣的事情,但我沒有得到我期待的結果:

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

如何分組記錄b從數據庫這樣的一天?

+0

我唯一能看到這樣做的另一種方式是每天都會有一個查詢,這並不可怕,但比使用ruby更簡單/高效。但是,它可以使您的數據庫免稅但是,你可以添加緩存,這可以幫助。如此多的變量,它實際上取決於你的用例。 – omarvelous

回答

3

因爲你最終想要加載所有記錄到內存中,你的第一個解決方案(在Ruby中分組)實際上是你可以做的最好的。利用SQL分組可以幫助優化,例如,如果您只想獲得每個組中的記錄數,或者甚至是以逗號分隔的記錄名稱列表,但是 - 因爲您確實需要記錄 - 無法獲得圍繞這個事實,你只需要獲取所有的記錄。

+0

哦,你說得對,這很有道理。 –