我试图将用户分组到细分市场。
用户模型:
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个订单的用户。我还需要做什么才能包括没有订单的用户?
答案 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)