Я на Ruby 1.9.2, Rails 3.0.x, и я использую MySQL DB. У меня есть модель сообщений, где каждый день можно отправлять новые сообщения.
У меня есть действие индекса, где я хочу отображать эти сообщения, сгруппированные по месяцам и годам. Это в основном используется для фильтрации сообщений.
Мой запрос выглядит так: -
@active_msgs = Messages.where('expiry > ?', Time.now).order('created_at DESC')
Я использовал функцию group_by в Rails после ссылки на этот пост
Моя группа по запросу: -
@msgs_by_month = @active_msgs.all.group_by {|u| u.created_at.month }
Мне был возвращен хэш, названный @msgs_by_month. Это помогло мне группировать сообщения по месяцам, но мне нужно учесть год , чтобы сформировать уникальный ключ, поскольку это поможет мне дифференцировать, например, с сентября 2011 года по сентябрь 2012 года.
Мой текущий ключ имеет тип Hash [Месяц] (например, Hash [9] = > за сентябрь сентября, я могу отображать все соответствующие значения). Как я могу получить уникальный ключ типа month, year, который я могу легко зацикливать, чтобы отобразить все записи, сгруппированные по месяцам и году создания.
Спасибо
ИЗМЕНИТЬ: -
Я предполагаю, что это один из способов сделать это, использовать created_at.to_date
api, если здесь
, Я только удивляюсь, как я могу удалить день из created_at.to_date
, чтобы получить уникальный месяц и год комбинационный ключ, который мог бы работа с функцией group_by.