У меня есть запрос ниже с ассоциациями, как показано.
Запрос работает, когда для велосипеда имеется только одна запись о бронировании, но он не выполняется, если у велосипеда несколько бронирований, и одна или несколько из них соответствуют условиям, а другие - нет. Поскольку другие не удовлетворяют условиям, они приводят к тому, что соответствующий велосипед возвращается в результате.
Как мне написать запрос, чтобы велосипед не возвращался в качестве результата запроса, когда хотя бы одна из бронирований соответствует условию where.not?
class Bike < ActiveRecord::Base
has_many :bookings
end
class Booking < ActiveRecord::Base
belongs_to :bike
end
startDate = Date.parse("2018-10-10")
endDate = Date.parse("2018-10-19")
@bikes = Bike.joins(:bookings).where.not("(date_start BETWEEN (?) AND (?)) OR (date_start BETWEEN (?) AND (?)) OR (((?) OR (?)) BETWEEN date_start AND date_end)", startDate, endDate, startDate, endDate, startDate, endDate)