mysql - 连接表与包含创建问题

标签 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) 

然后我得到只有有效订阅的用户

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

最佳答案

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

相关文章:

mysql - 如何选择日期间隔

ruby-on-rails - TinyMCE rails Assets 管道

ruby-on-rails - PGError : ERROR: aggregates not allowed in WHERE clause on a AR query of an object and its has_many objects

ruby-on-rails - 进入那个数据库!使用 Ruby 解析 CSV

Ruby 获取下载进度

Php 或 mysql 命令 - 将 mysql 行中的数据写入文本文件

MySQL:软件包 'mysql-server' 没有安装候选者

ios - 如何通过 iOS 设备向本地主机发出请求(使用 Xcode)?

ruby-on-rails - 我有一系列链接,想解析每个链接,使用 Nokogiri 检查每个链接的最有效方法是什么? - ruby

ruby - Windows 或 Ubuntu 上是否有类似 IDLE 的 ruby​​ 编辑器?