Для начала, вы можете попробовать что-то вроде этого:
def divide_events_by_day(events)
days = [[]]
events.sort_by { |x| x.event_date }.each { |e|
if days.last.empty? or days.last.event_date_date == e.event_date.date
days.last << e
else
days << [e]
end
}
days
end
Это не производит пустых дней, но кроме этого следует за вами довольно близко.
У меня есть метод Time#date
на моей машине, но я не вижу его в сборке чистого дистрибутива (1.8.7), поэтому вам может понадобиться добавить что-то вроде:
class Time
def date
to_i/(60*60*24)
end
end