Программное обеспечение, которое я создаю, помогает планировать события и связываться с людьми для участия в мероприятиях.Мы хотим идентифицировать всех пользователей, которых мы еще не пригласили на конкретное событие, с помощью PhoneCall
.Для этого мы хотим запросить:
1) Все пользователи, для которых нет ContactAttempt
для какого-либо события
2) Пользователи, для которых нет ContactAttempt
с event_id = это событие.идентификатор и этот предпринятый_тип = PhoneCall
.(это захватывает тех, с кем мы связались через Text
, но не PhoneCall
)
User.includes(:contact_attempts).references(:contact_attempts)
.where('contact_attempts.id IS NULL OR (contact_attempts.event_id = ? AND contact_attempts.attempted_type != ?)', @event.id, "PhoneCall")
Но этот запрос исключает третью группу пользователей, на которых я хочу ориентироваться, которых я не смогвключить в запрос:
Users
, у которого есть ContactAttempt
для другого event_id, но не для этого event_id.Сначала я думал, что это можно сделать с помощью contact_attempts.event_id != ?
, но это включало всех пользователей, у которых был существующий ContactAttempt
, даже если с ними связались для этого event_id ,
Как я могупостроить запрос так, чтобы он также был нацелен на всех пользователей, у которых нет ContactAttempt
для этого конкретного события с пытанием_типа = PhoneCall
, но может быть ContactAttempt
для предыдущего события?
Требуется ли для этого Arel?