Sql Rails:查找子级没有属性的父级

Sql Rails:查找子级没有属性的父级,sql,ruby-on-rails,ruby,activerecord,psql,Sql,Ruby On Rails,Ruby,Activerecord,Psql,我正在尝试查找没有状态为0、1或2的项目的所有发票 例如: - Invoice has_many Item - Item belongs_to Invoice 查询应返回发票2,因为它的任何项的状态都不在[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 但它不起作

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

例如:

 - Invoice has_many Item
 - Item belongs_to Invoice
查询应返回发票2,因为它的任何项的状态都不在[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.includes(:items).where.not(items: { status: [0, 1, 2] })
生成的SQL可能类似于:

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

发票.where(id:Item.where.not(状态:[0,1,2]).pulk('Invoice_id'))有可能有一个SQL查询而不是两个吗?事实上数据库很大,需要花费很多时间。@Yassine应该
select('Invoice_id')
not
pulk
,我的错
发票的SQL查询是什么。包括(:items)。where.not(项:{状态:[0,1,2]})
正在生成吗?
SELECT "invoices".* 
FROM "invoices" 
INNER JOIN "items" 
ON "items"."invoice_id" = "invoices"."id" 
WHERE (items.status NOT IN (1, 2, 3))