2015-03-28 1 views
0

У меня есть простая модель Appointment, в которой хранятся start_time и user_id. Я хотел бы получить все встречи, начиная с следующих 7 дней в порядке возрастания и сгруппированных по дням. В идеале результат будет хэш или многомерный массив, такие какКак запросить ActiveRecord с наличием и группой

{ 
    '30 March' => 
    [appt1,appt12, appt3], 
    '31 March' => 
    [appt5,appt2, appt7,appt8], 
    '1 April' => 
    [appt10,appt11,appt9, appt6,appt4], 
    '2 April' => 
    [appt15,appt21] 
} 

Запрос ниже получает желаемые результаты, но не в том формате, я хочу.

Appointment.order(start_time: :asc).where("start_time <= ?", 7.days.from_now.end_of_day) 

Есть ли способ структурировать запрос или мне нужно отформатировать результат отдельно?

ответ

0

Один из способов сделать это с group_by

appointments = Appointment.order(start_time: :asc). 
    where("start_time <= ?", 7.days.from_now.end_of_day). 
    group_by { |a| a.start_time.to_date } 
+1

Вот что я в конечном итоге делает, мне было просто интересно, если это может быть сделано в рамках SQL-запроса – margo