正在处理room
booking
个应用。在进行新的预订之前,将通过availability
与房间交叉检查来搜索check_in
和check_out
日期的existing bookings
个房间
每个room
都有一个字段available_quantity
。让我们为这个房间说5
。因此,我必须确保在bookings
和room
期间之间的任何一天exceed
不会check_in
的{{1}}(换句话说,总数{{1}在任何给定的日子里都不会超过check_out
我的计划是首先查找rooms_needed
和5(available_quantity)
check_in
这样可以正常工作,因为我将按照预期<{1}}低于输出
check_out
所以基本上这些是#find records with check_ins before the new checkout date && check_outs after the new checkin date
scope :bookings_between, lambda {|start_date, end_date| where("check_in < ? AND check_out > ?", end_date, start_date )}
现在的主要价值。
array
现在我想找的是bookings=#<ActiveRecord::Relation [#<Booking id: 20, room_id: 29, buyer_id: 11, rooms_needed: 1,check_in: "2017-06-20", check_out: "2017-06-23">, #<Booking id: 21, room_id: 29, buyer_id: 11,rooms_needed: 1, check_in: "2017-06-20", check_out: "2017-06-23">, #<Booking id: 22, room_id: 29, buyer_id: 11,rooms_needed: 2, check_in: "2017-06-22", check_out: "2017-06-25">, #<Booking id: 23, room_id: 29, buyer_id: 11, rooms_needed: 1, check_in: "2017-06-22", check_out: "2017-06-25">]>
array
的一天(以确保它不会超过Range: 2017-06-20 .. 2017-06-23, rooms_needed: 1
Range: 2017-06-20 .. 2017-06-23, rooms_needed: 1
Range: 2017-06-22 .. 2017-06-25, rooms_needed: 2
Range: 2017-06-22 .. 2017-06-25, rooms_needed: 1
)。我发现的问题是我需要考虑highest
。有人能告诉我如何从这个rooms_needed
数组中找到它?或者我复杂化了吗?谢谢
注意:基本上在
room_quantity
all the days within the range
和bookings
寻找loop
的方法 从bookings
天到array
的每一天的totalling
次预订 一天(作为一个范围我该怎么做)
答案 0 :(得分:0)
如果我没有理解这一点,那么您需要的是具有最高rooms_needed
的日期:
array.order("rooms_needed DESC").first
稍后您可以检查它是否低于room_quantity
。