Rails:查找少于X个关联的模型,也包括没有

时间:2017-01-13 07:49:57

标签: ruby-on-rails postgresql activerecord

我试图将用户分组到细分市场。

用户模型:

Class User
has_many :orders

订单型号:

Class Order
has_many :orders

现在让我们说我想让一部分用户少于5个订单。

User
.joins('left outer join orders on users.id = orders.user_id')
.group(:user_id)
.having('count(user_id) <= ?' 5)

然而,这只会抓住至少有1个订单的用户。我还需要做什么才能包括没有订单的用户?

2 个答案:

答案 0 :(得分:0)

我没有对此进行过测试,请尝试一下并告诉我。

User.joins( :orders ).group( 'users.id' ).having( 'count( order_id ) < 5' )

我相信你在计算错误的专栏。你应该算order_id。如果我错了或者这会引发任何错误,请随意发表评论。

答案 1 :(得分:0)

自己想出来。 “eager_load”包含所有内容。

User.eager_load(:orders).group(“users.id”)。having(“count(orders.id)&gt; =?”,5)