如何使用 having 和 group 查询 ActiveRecord

How to query ActiveRecord with having and group

我有一个简单的约会模型存储 start_time 和 user_id。我想让所有约会在接下来的 7 天内按升序开始并按天分组。理想情况下,结果将是散列或多维数组,例如

{
  '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)

是否有构建查询的方法,或者我是否需要单独格式化结果?

一种方法是使用 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 }