使用Ruby on Rails ActiveRecord在表上进行自我联接

时间:2018-08-27 06:17:53

标签: ruby-on-rails ruby activerecord rails-activerecord

我有一个名为Transaction的ActiveRecord模型。 每个交易都有四个字段:

  • TransactionID
  • 交易类型
  • 用户ID
  • 父交易ID

Transaction还有另外两种类型:

  • 借记交易
  • 偿还交易

对于每笔还款交易,在“父交易ID”字段中都会提及借方交易的交易ID。

使用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

查询以上数据应返回交易:124, 127

1 个答案:

答案 0 :(得分:0)

class Transaction < ApplicationRecord
  has_one :payback_transaction, class_name: 'Transaction', foreign_key: :parent_transaction_id
  belongs_to :debit_transaction, class_name: 'Transaction', foreign_key: :parent_transaction_id, optional: true

https://guides.rubyonrails.org/association_basics.html#self-joins

如果您希望每个借记卡有多个投资回报,则可能需要has_many而不是has_one