Ich mache eine statische Berechnung in meinem Produkt. Ein Benutzer hat eine Reihe von Operationen ausgeführt, sagen wir gepostete Kommentare. Ich möchte ihnen zeigen können, wie viele Kommentare sie pro Woche für den letzten Monat oder pro Monat für das vergangene Jahr gepostet haben.Gruppierung nach Woche/Monat/etc & ActiveRecord?
Gibt es eine Möglichkeit mit ActiveRecord auf diese Weise zu gruppieren? Ist es mein bestes, dies einfach manuell zu tun - um die Datensätze zu summieren, die auf meinen eigenen Kriterien basieren?
class User < ActiveRecord::Base
has_many :comments
end
class Comments < ActiveRecord::Base
belongs_to :user
end
@user.comments(:all).map {|c| ...do my calculations here...}
oder gibt es einen besseren Weg?
danke!
@user.comments.count(:group => "year(created_at),month(created_at)")
Dry-Code, ymmv
'group_by' ist keine ActiveRecord-Methode, sondern eine Ruby-Methode für' Enumerable'. – Laurens
Die Verwendung von 'u.created_at.month' ist kürzer –
Bitte nicht, dass dies alle Datensätze aus der Datenbank lädt, ActiveRecord Objekte instanziiert, Daten in ActiveSupports zeitzonenbewusste Objekte analysiert - alles nur um die Anzahl der Datensätze zu berechnen. –