У меня есть модель с расписанием has_one (с: datetime, from_a: datetime, до: datetime).Я хочу получить все модели, расписание которых соответствует дате и времени выполнения запроса.
Например, у меня есть модель m с графиком из: Sun, 15 октября 2018 года 19:00:00 UTC +00: 00 , from_a: вс, 14 октября 2018 19:20:00 UTC +00: 00 и до: вс, 14Октябрь 2018 20:00:00 UTC +00: 00 .Если текущее время вс, 14 октября 2018 19:14:00 UTC +00: 00 , тогда я буду искать только из , тогда я получу m, но если текущее времяis Sun, 14.10 2018 20:01:00 UTC +00: 00 и я ищу только из Я бы ничего не получил.
Вот код, которыйЯ пробовал:
scope :s, ->(time, type) { unscoped.joins(:schedule).where("\"schedule.#{type.to_s}\" < ? AND \"schedule.to\" > ?", time, time) }
и когда я звоню, объем будет Model.s(DateTime.now, :from)
.Дело в том, что этот код работает не так, как задумано, поскольку он не дает мне ни правильного, ни ожидаемого результата.
ОБНОВЛЕНИЕ
Это сгенерированный запросдля Model.s(DateTime.now, :from)
SELECT "models".* FROM "models" INNER JOIN "schedules" ON "schedules"."model_id" = "models"."id" WHERE ("schedules.from" < '2018-10-15 19:59:33.737073' AND "schedules.to" > '2018-10-15 19:59:33.737073')