簡體   English   中英

在RoR中搜索免費字詞

[英]Search free term in RoR

我正在尋找一種寫查詢的方法,該查詢將查找免費的會議室的日期。 我有兩個表:一個帶有會議室名稱的表和一個預訂表,該表包含兩個字段:開始日期[date_from]和結束日期[date_end]

尋找會議室的新客戶首先在會議室租用的日期和結束日期輸入搜索引擎。 如何搜索注冊表以考慮那幾天之間的預定日期,並僅顯示那些空閑的會議室。

例如,表中保留了1號房間的時間表,從2018年3月6日至2018年3月8日,表2的房間保留了2018年3月4日至2018年3月7日。我正在尋找3月的房間2018年8月8日至2018年3月9日

您有什么建議?

假設模型名稱為ConferenceRoom和ConferenceBooking,則相應的表將類似於Conference_rooms和Conference_bookings。 一旦提供了date_from和date_end參數,查詢將類似於

ConferenceRoom.
  left_joins(:conference_bookings).
  where(
    "conference_bookings.date_from > ? OR 
     conference_bookings.date_end < ?", date_end, date_from
  )

查詢將獲取預訂結束日期小於提供的date_from值的會議室的會議室和預訂開始日期大於提供的date_end值的會議室的結果。

首先從日期范圍內預訂的房間獲取所有ID。

ids = Booking.where("date_from <= ? AND date_end >= ?", date_end, date_from).pluck(:room_id)

所有其他房間都是免費的:

free_rooms = Room.where.not(id: ids)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM