使用
- 导轨 3.2.8
- 红宝石 1.9.3
- PostgreSQL
- Ubuntu 12.10。
感觉就像我在离开 Rails 几个月后完全忘记了如何构建 Rails 搜索。
Orders has_many Items
.
项目有字符串status
: in_progress
, canceled
, completed
. 他们也有一个布尔值acquired
。
所以,我想找到所有 'ready to complete' orders
,也就是说,所有项目的订单至少有一个项目具有(状态in_progress
和acquired
),任何不是 in_progress 的都是状态canceled
或状态completed
。
但我不知道如何构建一个查询,该查询将只返回具有所有满足这些条件的项目的订单。我有一个包含 3 个项目的订单,所有项目都在进行中,一个已获得。
orders = Order.includes(:items).where(items: { status: "in_progress", acquired: true })
这将返回Order
1Item
即acquired
. 但我需要一个不会返回任何订单的查询,因为并非所有项目都符合条件。但我不知道从哪里开始,试图寻找这个问题真的很困难。
我需要检查至少一个项目是 (in_progress
和acquired
) 任何不是canceled
orcompleted
的项目,并且所有项目都是这种方式。
任何朝着正确方向的推动将不胜感激!