模型结构:-
User has_many :subscriptions
Blog has_one :coupon
Subscription has_one :coupon
我包括表格
User.includes(subscriptions: :coupon, :blogs)
我正在尝试获取所有用户数据,并且仅获取与其对应的有效订阅。
如果我这样做
User.includes(subscriptions: :coupon, :blogs).where(:state => 1).references(:subscriptions)
然后我得到只有有效订阅的用户
那么如何让所有用户获得预加载的博客优惠券并包含在有效订阅中???
最佳答案
如果您想要加载所有用户,包括那些没有任何有效订阅的用户,但每个用户只能访问有效订阅,则需要定义另一个关联 valid_subscriptions
。可以这样完成:
在user.rb
has_many :valid_subscriptions, -> { valid }, class_name: '订阅'
在 subscription.rb
中,定义有效的含义。
范围:有效,-> { 其中(状态:1)}
然后您的查询可以是User.includes(:blogs, valid_subscriptions: :coupon)
关于mysql - 连接表与包含创建问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52184356/