Ich muss die Anzahl der Anmeldungen jeden Tag zu einer Rails-Anwendung über einen Zeitraum von Tagen erhalten, und kleben sie in einem Array. Ich habe derzeit eine funktionierende Lösung, aber ich bin sicher, es gibt einen viel besseren Weg, dies zu tun, als die Datenbank n mal abfragen zu müssen.Zählen Sie tägliche Anmeldungen über n Tagen mit Rails ActiveRecord
Meine aktuelle Lösung:
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_joined
ist eine DATETIME
Spalte.
Ich bin sicher, es gibt einen viel besseren Weg, dies zu tun, als die Datenbank 30 mal zu schlagen, und ich möchte vermeiden, wenn möglich rohe SQL-Abfragen zu verwenden.
Sie schnell nicht nur eine winzige Antwort schreiben und dann eine Reihe von Änderungen danach machen. Nehmen Sie sich stattdessen Zeit, um eine gute Antwort zu schreiben – karlingen
@karlingen was ist falsch mit meiner aktuellen Version? – Ilya
Sie haben zuerst die folgende Antwort gepostet: "User.group (" DATE (time_joined) "). Count". Und von da an hast du Änderungen vorgenommen, bis du eine gute Antwort gefunden hast. – karlingen