如何使用 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 }
我有一个简单的约会模型存储 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 }