在RoR中搜索免费术语

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在RoR中搜索免费术语相关的知识,希望对你有一定的参考价值。

我正在寻找一种方法来编写一个查询,以查找它是免费的会议室的日期。我有两个表:一个包含会议室名称的表和预订表包含两个字段:开始日期[date_from]和结束日期[date_end]

寻找会议室的新客户首先在租用房间和结束日期间在搜索引擎中键入。如何搜索注册表以考虑那些日期之间预订的天数,并仅显示那些免费的会议室。

例如,2018年3月6日至2018年3月8日的表格以及2018年3月4日至2018年3月7日的2号房间保留了1号房间的时间表。我正在寻找3月份的房间2018年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)

以上是关于在RoR中搜索免费术语的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个代码片段说包含错误?

Hue, Solr - 搜索词的自动填充

Android在活动视图中附加片段获取片段已添加错误

在文件中搜索术语

用于 RoR 项目的 GeoProvider 和 Gem

如何在 BottomNavigationView 的片段上打开搜索界面?