Получите одобренные и неодобренные соглашения отдельно до POSTGRES on Rails - PullRequest
1 голос
/ 06 мая 2020

Рассмотрим схему ниже для Пользователь , Соглашение и TaxiBooking таблицы:

Пользователи:

id - integer.  
name - string.  
email - string.  
agreement_id - integer

Соглашение:

id - integer.  
approved - boolean.  
expired_at - date.  

Заказ такси:

id - integer.  
booked_time - datetime.  
boarding_point - string.  
destination_point - string.  
client_name - string.  
user_id - integer

Соглашение может быть оставлено одобренным или неутвержденным.

Соглашения имеют срок действия по умолчанию, например 6 месяцев, и по истечении 6 месяцев срок действия соглашения истекает. expired_at будет хранить дату истечения срока действия соглашения.

Здесь отношения Rails: Пользователь с Соглашение и Пользователь с TaxiBooking указаны ниже:

class User < ActiveRecord::Base
  has_many :agreements
  has_many :taxi_bookings
end

Связь рельсов Соглашение с Пользователь это

class Agreement < ActiveRecord::Base
  belongs_to :user
end

Связь рельсов TaxiBooking с User - это

class TaxiBooking < ActiveRecord::Base
 belongs_to :user
end

Здесь мне нужно запросить данные пользователей, у которых нет еще не истекших и утвержденных соглашений и у которых есть taxi_bookings с future booked_time со следующими значениями: 1058 *

Ближайшее время заказа такси (в будущем) для пользователей из таблицы TaxiBookings.

Последний утвержденный и истекший идентификатор соглашения с датой истечения срока.

Да / Нет - то есть, если у пользователя есть какие-либо неутвержденные и не истекшие соглашения, возвращайте Да иначе Нет .

Я попробовал выполнить следующий запрос.

User.joins('LEFT OUTER JOIN agreements ON users.id = agreements.user_id AND agreements.approved = ?  ORDER BY users.id, agreements.expired_at ASC', true).select('DISTINCT ON (users.id) users.id, agreements.expired_at AS expired_at')

Но я не могу получить все значения в одном запросе.

Можем ли мы получить все вышеуказанные значения из одного запроса? Пожалуйста, дайте какой-нибудь эффективный способ получить значения для выше.

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