我正在返回一份约会清单。
现在它们看起来像这样:
-Jan 1
--appointment @230
-Jan 1
--appointment @3
-Jan 1
--appointment @4
-Jan 2
--appointment @4
-Jan 2
--appointment @5
我想返回列表
-Jan 1
--appointment @230
--appointment @3
--appointment @4
-Jan 2
--appointment @4
--appointment @5
约会有一个“start_at”字段,它是一个日期时间。比较简单。只是不确定如何遍历集合,然后以最合理的方式对其进行分组。
谢谢。
用户(是用户或培训师) has_many :appointments has_many :trainer_appointments, :class_name => "Appointment", :foreign_key => "trainer_id"
预约
# Table name: appointments
#
# id :integer not null, primary key
# trainer_id :integer
# start_at :datetime
# created_at :datetime not null
# updated_at :datetime not null
# user_id :integer
这是一些播放代码:u.trainer_appointments
=> [#<Appointment id: 6, trainer_id: 1, start_at: "2012-11-18 13:08:00", created_at: "2012-10-17 02:01:42", updated_at: "2012-10-17 02:01:42", user_id: 2>, #<Appointment id: 7, trainer_id: 1, start_at: "2012-11-18 13:08:00", created_at: "2012-10-17 02:02:00", updated_at: "2012-10-17 02:02:00", user_id: 2>, #<Appointment id: 8, trainer_id: 1, start_at: "2012-11-24 13:08:00", created_at: "2012-10-17 02:03:28", updated_at: "2012-10-17 02:03:28", user_id: 2>]
返回 3 个约会。两个在同一天。1 在不同的日子。
想以按日期分组的方式返回它。我尝试过这样的事情来弄清楚但迷路了:
u.trainer_appointments.collect {|each| each.start_at}.uniq.collect {|each| u.trainer_appointments.find_by_start_at(each.to_date.beginning_of_day..each.to_date.end_of_day)}
其中返回了两个约会。两个日期之间。第一天错过了第二个。
我知道代码在很多层面上都是错误的。我只是想玩弄迭代。虽然没有得到我想要的。可能是因为 uniq 以某种方式限制了返回大小,即使我期望在最终数组中返回一个范围。
我不确定迭代分组需要什么实际结构。这不是我的专长。数组中的数组分组?我将如何在视图中迭代它?
谢谢。