sql - Ruby on Rails - 引用表的值大于 0 的 Active Record 过滤器
问题描述
我目前正在尝试从 Ruby on Rails 中的选定数据中过滤掉那些属性“amount_available”大于零的数据。这通过@events.where(ticket_categories.amount_available > 0) 是没有问题的,但是ticket_categories 是一个没有固定长度的数组,因为可以有多个类别。如何轻松地遍历 where 子句中的数组并进行比较?
我只需要输出中至少有一个关联类别的 amount_available > 0 的事件。
这是我的代码:
@upcoming_events = @events.where("date >=?", Date.current)
@available_events = @upcoming_events.where(ticket_categories[0].amount_available > 0)
json_response(@available_events)
解决方案
您可以链接where
条件,并且可以添加基于关联模型的条件joins
:
available_events = @events
.where('date >= ?', Date.current)
.joins(:ticket_categories).where('ticket_categories.amount > 0')
.group(:id)
render json: available_events
注意:数据库连接可能会返回重复记录(取决于您的数据库结构和条件),因此需要group
通过id
.
推荐阅读
- mongodb - Mongodb Aggregate - 如何在匹配中引用其他字段
- javascript - 在 jQuery 中切换当前元素
- ssl - 在 Rust 中使用 async-tls 进行 tls 握手的未知发行者
- testng - testng 按时间段重复调用
- mysql - 查询以显示喜欢和不喜欢,不显示第一个表中的所有行
- c++ - IGraphicsCaptureItemInterop.CreateForWindow 遇到 winrt::hresult_access_denied ?
- node.js - 使用“google-spreadsheet”npm 包合并单元格
- flutter - 有没有办法将一排按钮导出为小部件?
- spark-ar-studio - 音频在 Spark-ar 中有效,但在 Instagram 中无效
- mysql - MySQL Group By 用于排序表