【发布时间】:2016-09-26 23:17:25
【问题描述】:
我有以下 AR 查询,它返回一组房间(在给定时间段内不可用的房间):
rooms = Room.joins(:bookings).where("(bookings.start_date >= ? AND bookings.start_date <= ?) OR (bookings.end_date >= ? AND bookings.end_date <= ?) OR (bookings.start_date <= ? AND bookings.end_date >= ?)", from, to, from, to, from, to)
我想修改那个查询,让它返回所有其他房间;那是在请求的时间段内可用的那些。正确的结果如下:
all_rooms = Room.all
available_rooms = all_rooms - rooms
但我直接想在单个查询中获取可用房间。我已经添加了一个 .not 但它没有给我正确的结果:
rooms = Room.joins(:bookings).where.not("(bookings.start_date >= ? AND bookings.start_date <= ?) OR (bookings.end_date >= ? AND bookings.end_date <= ?) OR (bookings.start_date <= ? AND bookings.end_date >= ?)", from, to, from, to, from, to)
我应该如何修改查询?
【问题讨论】:
标签: ruby-on-rails activerecord querying