ruby-on-rails - Rails 5:查询前面没有另一条记录(event_type)的记录(event_type)
问题描述
我的设置如下所示:
model Order
+ has_many events
model Event
+ belongs_to :order
- type (basic attribute; no relation)
我有一些事件类型可以有效地“撤消”其他事件。像:complete
和uncomplete
。我想形成一个询问以下内容的查询:
“只看complete
和uncomplete
事件类型,是最近的事件类型complete
吗?”
我想出了这个:
order.events.where(type: [:complete, :uncomplete]).order(created_at: :desc).first.complete?
但我不确定是否有更有效的方法来做到这一点。
另一个(奖励)挑战
还有另一个模型持有多个订单:
model RelatedOrder
+ has_many :orders
我也想做与上面相同的查询,但通过评估组中的每个订单complete
是否。
我可以使用includes
and 包括Order
and Event
,但是我猜我应该在每个上定义一个范围Order
?我确信有比以下更好的方法:
# model/related_orders.rb
def all_completed?
related_order.completed_orders.count == related_orders.orders.count
end
我正在使用 Postgres 9.5.20。
解决方案
推荐阅读
- python - 来自 SQL 的 Pandas 中的按周分组
- python - Plotly 中具有 3D 曲面的正交轴
- javascript - iOS Voiceover 不读取动态加载的内容
- github - 如何从推送到 github 的提交中删除一行代码?
- python - 使用 Airflow 将文件从本地系统上传到 Google Bucket - Python
- node.js - 在我的 MongoDB 中存储成功的 Stripe Payments 并在向用户提供产品之前对其进行验证
- javascript - 如何在 JavaScript 中读取文件夹中的 txt 文件列表?
- java - Maven编译打包后不会将其他类编译成jar
- php - 合并具有相同值的数组
- linux - 1 线程 vs 5 线程用于分布式系统通信?