1

has_many 関係の 1 つ (または多数) のインスタンスを持つユーザーの数を数える最良の方法を見つけようとしています。

たとえば、ユーザーhas_many :bank_accounts:credit_accounts(およびその他のいくつかの関係)。少なくとも 1 つの bank_account と少なくとも 1 つの credit_account を持つ一意のユーザーの数を見つけ、理想的にはこれをスコープ内に実装して、where クエリを実行できるようにしたいと考えています。

現時点では、次のコードを使用して(不十分に)実装しています。 (BankAccount.select(:user_id).uniq + CreditAccount.select(:user_id) + ...).uniq.count

私はいくつかの結合でたくさん遊んできましたが、結果が得られません。たとえば、さまざまな形式でいろいろいじりましたがUser.joins(:bank_accounts, :credit_accounts).uniq('users.id').count、結果が得られていないようです。

どんな助けでも大歓迎です、ありがとう!

4

2 に答える 2

0

通常のSQLを使用しても問題ない場合。以下のクエリを使用できます

select distinct(user_id) from 
(select user_id from bank_accounts union select user_id from credit_accounts) a;

このためのレールウェイが存在するかどうかはわかりません。

于 2013-10-02T17:45:39.720 に答える