我正在開發一個項目,該項目針對某個特定的屬性進行「預訂」。爲了防止房產被雙重預訂,我試圖返回給定時間範圍內不可用房產的結果。在我的預訂模型中,我有:check_in和:check_out日期字段。我目前的查詢是返回的日期,只包含給定的範圍。Mongoid和Rails重疊日期範圍
例如: 日期1 = 2013年4月1日 日期2 = 2013年4月15日
返回放置在該範圍內的所有擔保。但是,如果進行了預訂,請說明2013年3月15日至2013年4月5日我需要它來返回該結果。
這裏是我當前的查詢:
bookings = Booking.where(check_in: {'$gte' => params[:check_in].to_date, '$lte' => params[:check_out].to_date}, check_out: {'$gte' => params[:check_in].to_date,'$lte' => params[:check_out].to_date})
更新:我發現了一個類似的問題的活動記錄,但似乎無法讓它翻譯爲mongoid。 http://stackoverflow.com/questions/2682638/finding-records-that-overlap-a-range-in-rails – 2013-03-18 22:19:38