使用
- 导轨 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 })
这将返回Order1Item即acquired. 但我需要一个不会返回任何订单的查询,因为并非所有项目都符合条件。但我不知道从哪里开始,试图寻找这个问题真的很困难。
我需要检查至少一个项目是 (in_progress和acquired) 任何不是canceledorcompleted的项目,并且所有项目都是这种方式。
任何朝着正确方向的推动将不胜感激!