通过计数选择一对多的关系

时间:2016-02-03 15:52:25

标签: mysql sql ruby-on-rails join

所以我有用户模型和购物车模型。显然

User has_many :carts

我打算做的只是选择具有特定购物车数量的用户。 我真的想在纯粹的rails-like-sql中使用它,所以我从这开始:

User.joins(:carts).group(:id).count

它给了我一个哈希,其中包含我需要的所有信息(用户ID和多少购物车)。但是我不想再次浏览这个哈希,还有另一个聪明而干净的方式吗?

基本上我希望得到ActiveRecord::Relation的用户拥有超过3个推车

2 个答案:

答案 0 :(得分:1)

要向拥有3个购物车的用户返回AR,您需要使用having子句:

User.joins(:carts).group('users.id').having('count(carts.id) > 3')

答案 1 :(得分:0)

你不需要加入:

Cart.group(:user_id).count

当您说“浏览”时,您的意思是什么?