Я пытаюсь создать какую-то ассоциацию «многие к одному».Основным условием является система денежных потоков / транзакций, позволяющая отслеживать деньги между двумя учетными записями пользователя (возможно, между кошельком и текущим счетом).
У меня есть модель транзакции, в которой хранится основная информация - чтоучетная запись для дебетования, какая учетная запись для зачисления, какая сумма.
У меня также есть модель учетной записи, из которой пользователь может создать несколько (например, один для кошелька, один для кредитной карты, один дляСчет чеков и т. Д.).
Проблема, с которой я столкнулся, заключается в том, что моя модель транзакций ссылается на модель аккаунта дважды , один раз для credit_id и один раз для debit_id.
Я пытаюсь выяснить, какая ассоциация мне нужна, и я думаю, что мне нужно много-к-одному (много транзакций, одна учетная запись).Я не думаю, что мне нужна таблица соединений, но я не совсем уверен.
Вот мой основной код модели, я действительно не уверен, куда идти дальше.
class Transaction < ActiveRecord::Base
attr_accessible :amount, :description, :credit_id, :debit_id
belongs_to :user
belongs_to :debit, :class_name => "Account"
belongs_to :credit, :class_name => "Account"
end
А затем для модели Account:
class Account < ActiveRecord::Base
attr_accessible :name, :credit_transactions, :debit_transactions
belongs_to :user
has_many :transactions
has_many :credit_transactions, :through => :transactions, :source => :credit
has_many :debit_transactions, :through => :transactions, :source => :debit
end
С этой реализацией модели я могу правильно получить транзакции. Зачет и транзакцию, но при попытке сделать что-то вроде счета.credit_transactions, я получаю эту ошибку:
ActiveRecord :: StatementInvalid: SQLite3 :: SQLException: нет такого столбца: Transactions.account_id: ВЫБРАТЬ «account». * FROM «account» INNER JOIN «транзакции» ON"account" .id = "транзакции" .debit_id WHERE (("транзакции" .account_id = 3))
Я, честно говоря, немного застрял в том, куда идти дальше, поэтому любая помощь будет оценена,Спасибо!
[редактировать: обновленные коды моделей]