我有一个带有room
模型的rails应用程序has_many bookings
。
我的预订表格有room_id
,start_date
,end_date
。
在我的表单中,我向用户询问他希望预订房间的时间段:params[:from], params[:to]
我需要从db中检索所请求的时间段内未预订的所有房间。我认为这个请求可以用两组的交集来表示:
A)所有未预订的房间start_date
与params[:from]
之间params[:to]
B)所有未预订end_date
params[:from]
和params[:to]
之间的客房
C)所有未在params[:from]
之前和params[:to]
之后使用start_date进行预订的客房
我想出了这个
Room.joins(:bookings).where("bookings.start_date >= ? AND <= ?", params[:from], params[:to])
但这只是部分回答问题。如何编写AR请求(SQL或AR),以检索在请求的时间段内未预订的所有房间。