Ruby on rails rails 3获取具有多个关联记录(has_many)的记录计数

Ruby on rails rails 3获取具有多个关联记录(has_many)的记录计数,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我可以获取具有多个用户的帐户集合: Account.group('accounts.id HAVING count(users.id) > 1').joins(:users) 但是,只要我一打电话,依靠那个物体,我就会得到一个巨大的爆炸: (0.3ms)选择COUNT(*)作为COUNT\u all,accounts.id有COUNT(users.id)>1作为accounts\u id\u有COUNT\u users\u id\u 1,从“accounts”内部加入“users”上的“

我可以获取具有多个用户的帐户集合:

Account.group('accounts.id HAVING count(users.id) > 1').joins(:users)
但是,只要我一打电话,依靠那个物体,我就会得到一个巨大的爆炸:

(0.3ms)选择COUNT(*)作为COUNT\u all,accounts.id有COUNT(users.id)>1作为accounts\u id\u有COUNT\u users\u id\u 1,从“accounts”内部加入“users”上的“users”。“account\u id”=“accounts”。“id”按accounts.id分组有COUNT(users.id)>1 ActiveRecord::StatementInvalid:PG::Error:Error:语法错误位于或接近“AS” 第1行:…unt_all,accounts.id的count(users.id)>1作为帐户

似乎在postgres中,我想要的实际查询是:

select count(*) from (SELECT accounts.id FROM "accounts" INNER JOIN "users" ON "users"."account_id" = "accounts"."id" GROUP BY accounts.id HAVING count(users.id) > 1) as a;

如何让activerecord生成此(或类似)查询?

为什么不从用户模型中尝试此操作, 根据用户模型中的帐户\u id对\u进行分组

User.count(:group=>:account\u id)
这可能会返回一个显示{:account_id=>count_of_users}的散列 例如,{1=>3,2=>5,3=>2}


现在选择用户计数大于1的帐户id。

活动记录支持“have”作为一种方法。 因此,您可以通过以下方式进行查询:

Account.joins(:users).select('accounts.id').group('accounts.id').having('count(users.id) > 1')

但这需要ruby对集合进行迭代,并对每个值进行比较,然后调用count。我正在寻找一种方法,使数据库做计数。