У меня есть система выставления счетов, которая управляет дебетами и кредитами. Как правило, сумма счета-фактуры получается из суммы его дебетов, а остаток определяется путем взятия суммы его кредитов и вычитания ее из общей суммы.
Я делаю это с четырьмя моделями.
- Счет
- Позиция
- Дебет
- Кредит
Как это работает, это через модель соединения (Line Item), которая имеет полиморфную ассоциацию, называемую записываемой. На первый взгляд все работает правильно. Тем не менее, проверка позиции показывает, что хотя recordable_id отображается нормально, значение recordable_type равно nil.
Ниже приведен код:
class Invoice < ActiveRecord::Base
has_many :line_items, :dependent => :destroy
has_many :debits, :through => :line_items, :as => :recordable
has_many :credits, :through => :line_items, :as => :recordable
end
class LineItem < ActiveRecord::Base
belongs_to :invoice
belongs_to :recordable, :polymorphic => true
belongs_to :credit, :class_name => "Credit", :foreign_key => "recordable_id"
belongs_to :debit, :class_name => "Debit", :foreign_key => "recordable_id"
end
class Credit < ActiveRecord::Base
has_many :line_items, :as => :recordable, :dependent => :destroy
end
class Debit < ActiveRecord::Base
has_many :line_items, :as => :recordable, :dependent => :destroy
end
Кто-нибудь может указать мне правильное направление здесь?