rails:查找子级没有属性的父级

44u64gxh  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(238)
- Invoice has_many Item
 - Item belongs_to Invoice

我正在尝试查找没有状态为0、1或2的项目的所有发票。
例子:

Invoice 1
Items:
  Item 1 - status 0
  Item 2 - status 8

Invoice 2
Items:
  Item 1 - status 6
  Item 2 - status 8

查询应返回invoice 2,因为它的任何项的状态都不在[0,1,2]中。
我试过了,但没用:

Invoice.includes(:items).where.not(items: { status: [0, 1, 2] })

但它不起作用。它不断返回具有禁止状态的项目的发票。

ha5z0ras

ha5z0ras1#

此查询应实现以下功能:

Invoice.joins(:items).where("items.status NOT IN (0, 1, 2)")

生成的sql可能类似于:

SELECT "invoices".* 
FROM "invoices" 
INNER JOIN "items" 
ON "items"."invoice_id" = "invoices"."id" 
WHERE (items.status NOT IN (1, 2, 3))

相关问题