0

我有一个拥有_many 产品的模型用户,但有些用户还没有任何产品。我想编写一个查询,为我提供当前没有任何产品的所有用户,即产品为 0 的用户。

我能想到的唯一方法是非常丑陋的。例如,获取所有用户(User.all),然后遍历所有用户并检查@user.products < 1。感谢您的帮助。

4

1 回答 1

3

这应该可以解决问题:

User.includes(:products)
     .select('users.*')
     .group('users.id')
     .having('COUNT(products.*) = 0')

取自我的另一个答案:

编辑#1:这是另一种解决方案:

User.where('users.id NOT IN (?)', Product.all.pluck(:user_id).uniq.compact)

它检索表user_id中的所有 sproducts并选择不在此user_ids 列表中的所有用户。

于 2013-06-11T21:26:57.473 回答