Найти объекты, у которых нет связанных объектов, созданных в прошлом году - PullRequest
1 голос
/ 20 марта 2020

У меня есть Runner класс:

class Runner
  has_many :attendances
  has_many :attended_happenings, through: :attendances, source: :happening
end

Я хочу создать запрос, который получит всех участников, которые посетили мероприятие, но не в прошлом году. Как бы я это сделал?

Я пробовал что-то вроде Runner.joins(:attended_happenings).where("happenings.created_at < ?", 1.year.ago).uniq, но очевидно, что это привлечет бегунов, которые присутствовали на соревнованиях более года go, но эти бегуны могли бы также присутствовать произошло в течение последнего года, чего я не хочу. Полагаю, я мог бы вычесть бегунов, у которых в течение последнего года было вчастное участие, например:

runners = Runner.joins(:attended_happenings).where("happenings.created_at < ?", 1.year.ago).uniq - Runner.joins(:attended_happenings).where("happenings.created_at > ?", 1.year.ago).uniq

Но, похоже, это супер неэффективно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...