Rails Query JOIN with WHERE NOT 不起作用?



试图弄清楚为什么这个查询不起作用:

@items = Item.joins(:assignments).where.not(assignments: {shop_id: some_id})

我想获取与某些shop_id没有分配关联的所有项目。

奇怪的是,考虑到此查询将起作用,它不起作用(仅在某些shop_id显示具有分配关联的项目(:

@items = Item.joins(:assignments).where(assignments: {shop_id: some_id})
你必须

学习SQL JOIN是如何工作的。

你得到所有Item只是因为Assignment"好"shop_id也存在。所以,Rails做对了。

您需要的查询应如下所示:

Item.where.not(
  id: Assignment.where(shop_id: some_id).select(:item_id)
)

最新更新