我有一个表 ,transactions
可能包含重复项(对我们来说,重复项是Transaction
具有相同account_id
的date
, 和amount
)。
我的英语功能要求是“我想查看所有存在超过 1 笔具有相同 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
我正在使用 Rails 3.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
.. 这令人沮丧,因为我不希望 group by 子句中的 ID - 重点是我希望在检查欺骗时忽略 ID。
如果有人能指出我需要将其设为范围的 AREL 的正确方向,我将不胜感激——find_by_sql
当您需要记录时非常好,但我正在尝试创建 ActiveAdmin 范围——它不喜欢数组.