Le groupe enregistre en deux mois et l'année dans les Rails

Je suis sur Ruby 1.9.2, Rails 3.0.x et j'utilise MySQL DB. J'ai un Messages d'un Modèle, d'où l'on peut poster de nouveaux messages chaque jour.

J'ai un indice d'action où je veux afficher ces messages regroupés par mois et l'année. Il s'agit essentiellement utilisé pour filtrer les messages.

Ma requête ressemble à ceci:-

@active_msgs = Messages.where('expiry > ?', Time.now).order('created_at DESC')

J'ai utilisé le group_by fonction dans les Rails, après avoir fait référence à ce post

Mon Groupe En question est:-

@msgs_by_month = @active_msgs.all.group_by {|u| u.created_at.month }

J'étais retourné une valeur de Hachage appelé @msgs_by_month. Cela m'a aidé groupe de messages par mois, mais j'ai besoin de prendre en compte l'année, pour former une clé unique , car il me permettrait de différencier, par exemple, en Septembre 2011 et Septembre 2012.

Ma clé est de type Hash[Mois] ( par ex. de Hachage[9] => pour le mois de septembre, je peux afficher toutes les valeurs ). Comment puis-je obtenir une clé unique de type le mois, l'année qui je peux facilement effectue une boucle pour afficher tous les enregistrements regroupés par Mois et l'Année de création.

Merci

MODIFIER:-

Je devine une façon de faire cela est de faire usage de la created_at.to_date api fournie ici
. Je me demande seulement, comment je peux dépouiller le jour de created_at.to_date pour obtenir un unique le mois et l'année la combinaison de touches qui pourrait travail avec le group_by fonction.

double possible de MySQL GROUPE de Requêtes PAR jour / mois / année
Nah, pas doublon. le q vous faites allusion, n'est MYSQL, où ce q est un rails + mysql..

OriginalL'auteur boddhisattva | 2012-09-21