join表的includes创建问题

xiozqbni  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(341)

模型structure:-

User has_many :subscriptions 
Blog  has_one :coupon
Subscription has_one :coupon

我包括table

User.includes(subscriptions: :coupon, :blogs)

我正在尝试获取所有用户数据,并且只获取与之对应的有效订阅。
如果我这样做了

User.includes(subscriptions: :coupon, :blogs).where(:state => 1).references(:subscriptions)

然后我得到的用户只有有效的订阅
那么,如何让所有用户预装博客优惠券和有效的订阅包括???

blpfk2vs

blpfk2vs1#

如果要加载所有用户,包括没有任何有效订阅的用户,但每个用户只能访问有效订阅,则需要定义另一个关联 valid_subscriptions . 可以这样做:

user.rb has_many :valid_subscriptions, -> { valid }, class_name: 'Subscription'subscription.rb ,定义有效的含义。 scope :valid, -> { where(state: 1) } 那么你可以 User.includes(:blogs, valid_subscriptions: :coupon)

相关问题