好的。所以我有一个 Vehicle 模型和 Schedule 模型。车辆has_many :schedules
(时间表belongs_to :vehicle
)。时间表具有以下结构:
id | (date)from_date | (date)to_date | (bool)available | (int)vehicle_id
用户指定天数范围:from_date
并且to_date
我需要退回所有可用天数的车辆
示例(为简单起见,只有一辆车):
[
(id: 1, from_date: "10/10/2012", to_date: "13/10/2012, available: true, vehicle_id: 1),
(id: 2, from_date: "14/10/2012", to_date: "15/10/2012", available: true, vehicle_id: 1),
(id: 3, from_date: "16/10/2012", to_date: "20/10/2012", available: false, vehicle_id: 1)
]
- 测试查询:
1) from_date: "12/10/2012", to_date: "15/10/2012"
, => 结果:车辆
2) from_date: "11/10/2012", to_date: "17/10/2012"
, => result: [] (因为 16.10 和 17.10不可用)
3) from_date: "01/11/2012", to_date: "30/11/2012"
, => 结果:车辆(如果日期范围内没有一天在日程表列表中 - 车辆仍然返回(认为可用)。所以唯一的例外 - 如果范围内的任何一天恰好不是可用的 - 车辆应该被拒绝)
如何实现?对不起,如果它太复杂了。