【发布时间】:2018-08-27 06:17:52
【问题描述】:
我有一个名为 Transaction 的 ActiveRecord 模型。
每笔交易有四个字段:
- 交易 ID
- 交易类型
- 用户 ID
- 父事务ID
Transaction还有另外两种类型:
- 借记交易
- 回报交易
对于每个 Payback Transaction,Debit Transaction 的 TransactionID 都会在 Parent TransactionID 字段中提及。
使用 ActiveRecord 查询,我必须找到特定用户 ID 的未付借记交易。
示例数据:
TransactionID Type of Transaction UserID Parent TransactionID
123 Debit 1 null
124 Debit 1 null
125 Credit 1 123
127 Debit 1 null
查询以上数据应该返回Transactions:124, 127。
【问题讨论】:
-
DebitTransaction有很多PaybackTransactions 对吗? -
一个
PaybackTransaction只有一个DebitTransaction。 -
试试这个
Transaction.where(parent_transaction_id: nil, type: 'Debit').where.not(id: Transaction.select(:parent_transaction_id).uniq) -
@HardikUpadhyay 您的解决方案有效,但不使用子查询和使用自联接表语句是否可行?
-
@shril 是的,你可以。您必须编写自定义关联。请看stackoverflow.com/questions/17476521/…
标签: ruby-on-rails ruby activerecord rails-activerecord