0

、その後、すべてこれと同様の結果を得るためにビュー[Postgresqlの]

によってのみ発注する必要があり(日付構文を無視してください):

第二は

最後の3日間

[[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日間しか必要とせず、次にビュー数を考慮します。

私はどのオプションを使用しますか、理想的には1つのクエリのみを使用しますか?

ありがとうございます。

答えて

0

作成日は、現在の日付と現在の日付の間にできます。ここでは、過去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

ここでは答えは1つのクエリではない場合があります。しかし、それはあなたの要件を満たす。

Userモデルを例にとっています。

まず、作成日が過去3日間であるユーザーを取得します。今

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

(+)

を使用して2つの結果を組み合わせ、その作成日、最後の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