わかった。だから私は車両モデルとスケジュールモデルを持っています. 車両has_many :schedules
(スケジュールbelongs_to :vehicle
)。スケジュールの構造は次のとおりです。
id | (date)from_date | (date)to_date | (bool)available | (int)vehicle_id
ユーザーは日数範囲を指定します:from_date
そしてto_date
、すべての日数が利用可能な車両を返す必要があります
例 (簡単にするために 1 台の車両を使用):
[
(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"
, => 結果: [] (16.10 と 17.10 が利用できないため)
3) from_date: "01/11/2012", to_date: "30/11/2012"
, => 結果: 車両 (日付範囲の 1 日もスケジュール リストにない場合 - 車両は引き続き返却されます (利用可能と見なされます)。したがって、唯一の例外 - 範囲のいずれかの日がnot_availableである場合- 車両拒否する必要があります)
これはどのように達成できますか?複雑すぎてすみません。