重複を含む可能性のあるテーブルがtransactions
あります(私たちにとって、重複とは、、、およびがTransaction
同じです)。account_id
date
amount
私の英語の機能要件は、「同じaccount_id、日付、および金額で複数のトランザクションが存在するすべてのトランザクションを表示したい」です。
ARELを一時的にあきらめて、SQLで次のようなものを作成しました。
SELECT * FROM transactions t1, transactions t2
WHERE t1.id != t2.id
AND t1.date = t2.date
AND t1.amount = t2.amount
AND t1.account_id = t2.account_id
Rails3.2.xとPostgresを使用しています。
もともと、私はこれをARELで試しました。
Transaction.group(:account_id, :date, :amount).having("count(id) > 1")
しかし、それは私に集約関数に関するSQLエラーを与えました:
PG::Error: ERROR: column "transactions.id" must appear in the GROUP BY clause or be used in an aggregate function
..これはイライラします。groupby句のIDが必要ないためです。要点は、重複をチェックするときにIDを無視することです。
誰かが私をARELの正しい方向に向けることができれば、私はこれをスコープにする必要があります-find_by_sql
レコードが必要な場合は素晴らしいですが、ActiveAdminスコープを作成しようとしています-配列は好きではありません。