模型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)
然后我得到的用户只有有效的订阅
那么,如何让所有用户预装博客优惠券和有效的订阅包括???
1条答案
按热度按时间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)