Ich bin auf Ruby 1.9.2, Rails 3.0.x und ich benutze MySQL DB. Ich habe ein Nachrichtenmodell, in dem man jeden Tag neue Nachrichten schreiben kann.Gruppendatensätze nach Monat und Jahr in Rails
Ich habe eine Indexaktion, wo ich diese Nachrichten nach Monat und Jahr gruppiert anzeigen möchte. Dies wird im Grunde verwendet, um Nachrichten zu filtern.
Meine Abfrage sieht wie folgt aus: -
@active_msgs = Messages.where('expiry > ?', Time.now).order('created_at DESC')
ich die group_by Funktion in Rails verwendet, nach this post
Meine Gruppe von Query bezieht, ist: -
@msgs_by_month = @active_msgs.all.group_by {|u| u.created_at.month }
Ich war hat einen Hash namens @msgs_by_month zurückgegeben. Dies half mir, die Nachrichten nach Monat zu gruppieren, aber ich muss das Jahr berücksichtigen, um einen eindeutigen Schlüssel zu bilden, da es mir helfen würde, zB zwischen Sept. 2011 und Sept. 2012 zu unterscheiden.
Mein aktueller Schlüssel nur vom Typ Hash [Monat] (zB Hash [9] => für Monat September, kann ich alle entsprechenden Werte anzeigen). Wie kann ich einen eindeutigen Schlüssel des Typs Monat, Jahr erhalten, den ich problemlos durchschleifen kann, um alle Datensätze nach Monat und Jahr der Erstellung gruppiert anzuzeigen.
Danke
EDIT: -
Ich bin eine Art und Weise zu raten, dies zu tun, ist die Verwendung der created_at.to_date
api, here Gebrauch zu machen. Ich frage mich nur, wie ich kann von created_at.to_date
den Tag strippen, um einen einzigartige Kombination Schlüssel das könnte Arbeit mit der group_by Funktion Monat und Jahr.
möglich Duplikat [MySQL Query GROUP BY Tag/Monat/Jahr] (http://stackoverflow.com/questions/508791/mysql-query-group-by-day-month- Jahr) – noodl
Nein, nicht duplizieren. das q, auf das du dich beziehst, ist nur MYSQL-bezogen, wo dieses q ein rails + mysql ist. – Philip