连接表与包括创建问题

时间:2018-09-05 11:44:22

标签: mysql ruby-on-rails ruby left-join rails-activerecord

模型结构:-

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) 

那我得到的用户只有有效的订阅

那么如何使所有用户都获得预加载的博客优惠券并包含在有效订阅中?

1 个答案:

答案 0 :(得分:0)

如果要加载所有用户,包括那些没有任何有效订阅的用户,但是对于每个用户只能访问有效订阅,则需要定义另一个关联ASP.NET Core。可以通过以下方式完成:

valid_subscriptions

user.rb

has_many :valid_subscriptions, -> { valid }, class_name: 'Subscription'中,定义有效的含义。

subscription.rb

然后您可以查询scope :valid, -> { where(state: 1) }