Я использую ActiveAdmin, и у меня есть эта область, которая показывает заказы с истекающими подписками:
scope: expired do |orders|
orders
.joins(:subscriptions)
.group('orders.id')
.having('MIN(subscriptions.end_date) < ?', Time.now.end_of_day)
И у меня есть настройка заказов, где они могут иметь несколько подписок, поэтому, если срок действия одной подписки истек, а одна -нет, тогда эта область все еще покажет этот порядок.
Итак, в этом случае у меня есть что-то вроде набора результатов, которые возвращают что-то вроде этого:
и произнеситедата 24.02.19, я хотел бы иметь возможность исключить все строки с идентификатором 14010497, так как не все подписки истекли.Как бы я сделал это в activerecord?Я пытался использовать NOT IN
примерно так:
where('orders.id NOT IN (SELECT DISTINCT id from distributions WHERE distributions.end_date < ?)'
, но я думаю, что я использую неправильно.