tôi có thể nhận bộ sưu tập của các tài khoản có nhiều hơn một người sử dụng:ray 3 nhận được số lượng các bản ghi rằng có nhiều hơn một hồ sơ liên kết (has_many)
Account.group('accounts.id HAVING count(users.id) > 1').joins(:users)
Nhưng, ngay sau khi tôi gọi. đếm trên đối tượng đó, tôi nhận được một vụ nổ lớn:
(0.3ms) CHỌN 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 "người dùng". "Account_id" = "tài khoản". "Id" GROUP BY accounts.id HAVING count (users.id)> 1 ActiveRecord :: StatementInvalid: PG :: Lỗi: LRI: lỗi cú pháp tại hoặc gần "AS" Dòng 1: ... unt_all, accounts.id CÓ count (users.id)> 1 AS tài khoản ...
Dường như trong postgres, truy vấn thực tế tôi muốn là:
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;
Làm cách nào để nhận được activerecord để tạo truy vấn này (hoặc so sánh)?
nhưng điều đó đòi hỏi iterating ruby qua việc thu thập và làm một so sánh trên mỗi value-- và sau đó gọi số trên đó. Tôi đang tìm kiếm một cách để làm cho cơ sở dữ liệu làm đếm. – patrick