Самостоятельное соединение на таблице с использованием Ruby on Rails ActiveRecord - PullRequest
0 голосов
/ 27 августа 2018

У меня есть модель ActiveRecord с именем Transaction.Каждая транзакция имеет четыре поля:

  • TransactionID
  • Тип транзакции
  • UserID
  • Родительский TransactionID

ТамЕсть еще два типа Transaction:

  • Дебетовая транзакция
  • Операция окупаемости

Для каждой транзакции окупаемости упоминается TransactionID дебетовой транзакциив поле Родительский идентификатор транзакции.

С помощью запроса ActiveRecord мне нужно найти неоплаченные дебетовые транзакции определенного идентификатора пользователя.


Пример данных:

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 голосов
/ 27 августа 2018
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, если вы хотите получить несколько возвратов за дебет.

...