我有如下关联
一个用户有多个订阅(只有一个订阅状态为活动)订阅属于用户
我正在寻找一个活动记录查询,可以帮助我选择所有订阅都被取消的用户,或者换句话说,没有任何活动订阅的用户。
对于这个问题,也欢迎使用原始Sql查询。
有两种方法
一1:
User.where.not(id: Subscription.where(status: 'active').pluck(:user_id))
2:
active_subscription_user_ids = Subscription.where(status: 'active').pluck(:user_id)
User.left_outer_joins(:subscriptions).where.not(id: active_subscription_user_ids)
可以通过下面的查询
User.where.not(id: Subscription.select(:user_id).where(status: 'Active'))
请尝试下面的查询
User.joins(:subscriptions).where('subscriptions.status = "active"').group('subscriptions.id').having("count(subscriptions.id) < 1")