2016-04-22 8 views
0

毎日、サインアップの回数をレールアプリケーションに取得して配列に貼り付ける必要があります。私は現在、実用的なソリューションを持っていますが、データベースをn回照会するよりもずっと良い方法があると確信しています。Rails ActiveRecordでn日間に1日のサインアップをカウントする

私の現在のソリューション:

signups = [] 

30.times.do |i| 
    day = Time.current - (29.days - i.days) 
    todays_signups = User.where(time_joined: day.beginning_of_day..day.end_of_day).count 
    signups << todays_signups 
end 

User.time_joinedDATETIME列です。

これを行うには、データベースを30回実行するよりもずっと良い方法があります。可能であれば、生のSQLクエリを使用しないようにしたいと思います。あなただけのSQLクエリを経由してそれを行うことができます

答えて

1

User.where(time_joined: your_interval).group("DATE(time_joined)").count 
+0

はちょうどすぐに小さな答えを投稿し、その後の編集の束をしないでください。代わりに、良い答えを書くためにあなたの時間をとります – karlingen

+0

@karlingenは私の現在のバージョンで何が間違っていますか? – Ilya

+0

最初に次の回答を投稿しました: "User.group(" DATE(time_joined) ")。count"。そしてそこからあなたはok回答を思いつくまで編集を続けました。 – karlingen

関連する問題