我在 Ruby 1.9.2、Rails 3.0.x 上,我使用 MySQL DB。我有一个消息模型,每天都可以发布新消息。
我有一个索引操作,我想在其中显示按月和年分组的这些消息。这基本上用于过滤消息。
我的查询如下所示:-
@active_msgs = Messages.where('expiry > ?', Time.now).order('created_at DESC')
在参考了这篇文章后,我在 Rails 中使用了 group_by 函数
我的查询分组是:-
@msgs_by_month = @active_msgs.all.group_by {|u| u.created_at.month }
我收到了一个名为@msgs_by_month 的哈希。这有助于我按月对消息进行分组,但我需要考虑年份,以形成一个唯一的 key,因为它可以帮助我区分例如 2011 年 9 月和 2012 年 9 月。
我当前的键只有 Hash[Month] 类型(例如 Hash[9] => 九月份,我可以显示所有适当的值)。我如何获得类型为月、年的唯一键,我可以轻松地循环显示按创建月和年分组的所有记录。
谢谢
编辑:-
我猜一种方法是使用此处created_at.to_date
提供的 api
。我只是想知道,我怎样才能去掉一天来获得一个可以与 group_by 函数一起使用的独特的月份和年份组合键。created_at.to_date