У меня есть 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
Но, похоже, это супер неэффективно?