【问题标题】:join table with includes creating problem包含创建问题的连接表
【发布时间】:2018-09-05 11:44:21
【问题描述】:

模型结构:-

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) 

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

那么如何让所有用户预装博客优惠券并包含在有效订阅中???

【问题讨论】:

  • 导轨版本?自从 v 5 实施 left_joins 以及其他一些新的和不同的更改后,这已成为任何 Rails 问题的重要组成部分
  • :blogs 中的User.includes(subscriptions: :coupon, :blogs) 是什么?

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


【解决方案1】:

如果您想加载所有用户,包括那些没有任何有效订阅的用户,但每个用户只能访问有效订阅,您需要定义另一个关联 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)

【讨论】:

  • 我想要所有用户的数据,并且只有有效的订阅。你解释错了问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多