0

使用活動記錄,如何通過2列(created_at,視圖)命令:如何通過created_at最後3天,訂單記錄,再由另一列,使用Rails [PostgreSQL的]

月1日:中創建的記錄過去三天

第二:以後,一切都應該由意見

爲了得到類似這樣的結果只能訂購(請無視日期語法):

[[2017-02-15 00:00:00 UTC, 150]], 
[2017-02-14 00:00:00 UTC, 88], 
[2017-02-13 00:00:00 UTC, 12]], 
[2016-01-14 00:00:00 UTC, 99999]], 
[2016-03-10 00:00:00 UTC, 3000]], 
[2016-11-07 00:00:00 UTC, 2000]], 
[2016-10-21 00:00:00 UTC, 1000]], 
[2016-09-03 00:00:00 UTC, 100]], 
[2016-05-18 00:00:00 UTC, 10]] 

我在Postgresql中發現了「date_trunc」,但我只需要最後3天一次,然後只考慮視圖的數量。

我有哪些選項,理想情況下只使用一個查詢?

謝謝

回答

0

您可以在當前日期和當前日期之間創建日期 - 3天。在這裏,您將獲得最近3天創建的所有記錄。

current_date = Time.zone.now 
before_date = current_date - 3.days 

Ex: where(:created_at => before_date.beginning_of_day.. current_date.end_of_day).order(created_at ASC, views DESC) 
+0

謝謝,但只顯示過去3天。所有記錄都需要顯示,並在最後3天內創建。 – Simon

2

這裏是一個答案,可能不是一個單一的查詢。但是,它滿足您的要求。

我以User模型爲例。

首先,獲取創建日期在過去3天內的用戶。

users = User.where(:created_at => (Date.today - 3.days)..Date.today)

現在,得到它的創建日期是不是在過去3天的用戶,以便通過意見DESC

users2 = (User.where.not(:created_at => (Date.today - 3.days)..Date.today)).order('views desc') 

現在,使用(+)

兩個結果相結合

Rails活動記錄對象可以使用進行合併

users3 = users + users2給出您的結果。

+0

謝謝Sravan,這工作。儘管如此,我仍然在尋找單一的查詢解決方案。 – Simon

+0

是的,我也會繼續嘗試。如果您覺得它有用,您可以接受它。 – Sravan

+0

我upvoted它作爲有用的,謝謝:-) – Simon

相關問題