ユーザーが多くの支払いサブスクリプションを持つことができる Postgres テーブルがあり、支払いサブスクリプションはアクティブまたは非アクティブのいずれかであり、支払いサブスクリプション テーブルの activate_at および inactivated_at 日付フィールドで示されます。アクティブな支払いサブスクリプションのないすべてのユーザーを検索したいと考えています。
有料サブスクリプションを持たないすべてのユーザーを見つけるのは簡単です
User.joins("LEFT JOIN payment_subscriptions ON (payment_subscriptions.user_id = users.id)").where("payment_subscriptions.id IS NULL")
また、非アクティブなサブスクリプションのみを持っているすべてのユーザーを見つけたいと考えています。上記と同じパターンを使用すると、ある時点でサブスクリプションを非アクティブ化したすべてのユーザーを見つけることができますが、アクティブなサブスクリプションも持っていないという保証はありません。
User.joins("LEFT JOIN payment_subscriptions ON (payment_subscriptions.user_id = users.id)").where("payment_subscriptions.inactivated_at IS NOT NULL")
テーブルからサブスクリプションを持っていない、またはアクティブなサブスクリプションを持っていないユーザーを取得するにはどうすればよいですか?