so I'm trying to make a relationship between an allocation and a general ledger account, and it's turning out to be a bit more complicated than I initally thought, I was just wondering if there was a more elegant way
So basically an allocation must have a credit and debit account, both of which are general ledger accounts, and I can't use STI because a general ledger account can be a debit account on some allocations but credit account on others.
Now, another feature I want to have is to query all the debits and credits on a particular general ledger account. So a general ledger account now must have many credits and debit transactions. This is what I have so far:
class Allocation
belongs_to :journal_entry_item
belongs_to :allocatable, polymorphic: true
has_one :debit_allocation
has_one :credit_allocation
has_one :debit_account, through: :debit_allocation, source: :general_ledger_account
has_one :credit_account, through: :credit_allocation, source: :general_ledger_account
end
class DebitAllocation
belongs_to :allocation
belongs_to :general_ledger_account
end
class CreditAllocation
belongs_to :allocation
belongs_to :general_ledger_account
end
class GeneralLedgerAccount
belongs_to :company
has_many :debit_allocations
has_many :credit_allocations
has_many :debits, through: :debit_allocations, source: :allocation
has_many :credits, through: :credit_allocations, source: :allocation
end
I feel like there should be a simpler way... Can anyone weigh in? Thanks in advance!
What You think about: whether 'Allocation' can be both 'debit' and 'credit'?
If it is not possible, You could define next Models: