Sono su Ruby 1.9.2, Rails 3.0.xe utilizzo DB MySQL. Ho un modello di messaggi, dove si possono postare nuovi messaggi ogni giorno.Record di gruppo sia per mese che per anno in Rails
Ho un'azione indice in cui voglio visualizzare questi messaggi raggruppati per mese e anno. Questo in pratica è usato per filtrare i messaggi.
La mia domanda si presenta così: -
@active_msgs = Messages.where('expiry > ?', Time.now).order('created_at DESC')
ho usato la funzione group_by in Rails, dopo aver fatto riferimento a this post
mio query GROUP BY è: -
@msgs_by_month = @active_msgs.all.group_by {|u| u.created_at.month }
ero ha restituito un hash chiamato @msgs_by_month. Questo mi ha aiutato raggruppare i messaggi per mese, ma ho bisogno di prendere in considerazione l'anno, per formare una chiave univoca, in quanto mi avrebbe aiutato a differenziare tra per esempio, settembre 2011 e settembre 2012.
La mia chiave corrente Hash [9] => per il mese di settembre, posso visualizzare tutti i valori appropriati). Come posso ottenere una chiave univoca del tipo mese, anno che posso facilmente visualizzare in loop per visualizzare tutti i record raggruppati per mese e anno di creazione.
Grazie
EDIT: -
Sto indovinando un modo per fare questo, è quello di rendere l'uso del created_at.to_date
api, a condizione here . Mi chiedo solo, come posso nudo fuori il giorno da created_at.to_date
per ottenere un unico mese e anno combinazione di tasti che potrebbe lavoro con la funzione group_by.
possibile duplicato del [MySQL Query GROUP BY giorno/mese/anno] (http://stackoverflow.com/questions/508791/mysql-query-group-by-day-month- anno) – noodl
Nah, non duplicato. il q a cui ti riferisci è solo MYSQL-related dove questo q è un rail + mysql .. – Philip