我有一个主题有很多来源(来源属于主题)。每个来源都有一个published_date
字段。我想要的是查询topic.sources
并将它们分组为基于published_date的对象数组。
执行此操作的一种方法是调用topic.sources
,然后按published_date
对其进行排序。最后为每个日期创建新数组并相应地将其推送到数组中。
topic.sources对象(数组):
[#<Source id: 12, topic_id: 2, published_date: "2014-11-13">,
#<Source id: 9, topic_id: 2, published_date: "2014-10-21">
#<Source id: 8, topic_id: 2, published_date: "2014-10-21">]
这应该看起来像这个数组数组:
[[#<Source id: 9, topic_id: 2, published_date: "2014-10-21">
#<Source id: 8, topic_id: 2, published_date: "2014-10-21">],
[#<Source id: 12, topic_id: 2, published_date: "2014-11-13">]]
答案 0 :(得分:2)
尝试使用group_by
:
topic.sources.group_by(&:published_date)
你应该得到Hash
,看起来像这样:
{"2014-10-24" => [#<Source id: 9, topic_id: 2, published_date: "2014-10-21">
#<Source id: 8, topic_id: 2, published_date: "2014-10-21">],
"2014-11-13" => [#<Source id: 12, topic_id: 2, published_date: "2014-11-13">]}