我有一系列假期:
Holiday.all
Holiday Load (0.7ms) SELECT "holidays".* FROM "holidays"
=> #<ActiveRecord::Relation [#<Holiday id: 1, name: "Dia da Confraternização Universal", holidayable_id: 1, holidayable_type: "Country", date: "2014-01-01", created_at: "2014-11-05 21:38:13", updated_at: "2014-11-05 21:38:13", verified?: false>, #<Holiday id: 2, name: "Natal", holidayable_id: 1, holidayable_type: "Country", date: "2014-12-25", created_at: "2014-11-05 22:02:33", updated_at: "2014-11-05 22:02:33", verified?: false>]>
我想把这几天的日期分成几个月,所以我最终会得到12个数组(每个月一个)。
答案 0 :(得分:3)
您要使用的是Enumerable#group_by
方法。
按块的结果对集合进行分组。返回一个哈希,其中键是块的计算结果,值是集合中与键对应的元素数组。
如果没有给出阻止,则返回枚举数。
(1..6).group_by { |i| i%3 } #=> {0=>[3, 6], 1=>[1, 4], 2=>[2, 5]}
例如
["12/25", "01/01", (...)].group_by { |date| date.split("/").first }