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

pat*_*ick 7 activerecord ruby-on-rails

我可以获得拥有多个用户的帐户集合:

Account.group('accounts.id HAVING count(users.id) > 1').joins(:users)
Run Code Online (Sandbox Code Playgroud)

但是,只要我在该对象上调用.count,就会发生巨大的爆炸:

(0.3ms)SELECT COUNT(*)AS count_all,accounts.id HAVING count(users.id)> 1 AS accounts_id_having_count_users_id_1 FROM"accounts"INNER JOIN"users"ON"users"."account_id"="accounts"."id "GROUP BY accounts.id HAVING count(users.id)> 1 ActiveRecord :: StatementInvalid:PG :: Error:ERROR:语法错误在"AS"处或附近第1行:... unt_all,accounts.id HAVING count(用户) .id)> 1个AS帐户......

似乎在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;
Run Code Online (Sandbox Code Playgroud)

如何获取activerecord来生成此(或类似的)查询?

小智 10

活动记录支持'有'作为方法.所以你可以这样做你的查询:

Account.joins(:users).select('accounts.id').group('accounts.id').having('count(users.id) > 1')
Run Code Online (Sandbox Code Playgroud)