Группировка объектов Mongoid по дням

После долгих экспериментов с console, я придумал этот метод для группировки объектов типа activerecord (Mongoid) по дню их возникновения. Я не уверен, что это лучший способ добиться этого, но он работает. Есть ли у кого-нибудь лучшее предложение, или это хороший способ сделать это?

#events is an array of activerecord-like objects that include a time attribute
events.map{ |event|
  # convert events array into an array of hashes with the day of the month and the event
  { :number => event.time.day, :event => event }
}.reduce({}){ |memo,day|
  # convert this into a hash with arrays of events keyed by their day or occurrance
  ( memo[day[:number]] ||= [] ) << day[:event]
  memo
}

=>  {
      29 => [e1, e2],
      28 => [e3, e4, e5],
      27 => [e6, e7],
      ...
    }

Спасибо!

5
задан maximus ツ 2 September 2013 в 06:03
поделиться