У меня есть система выставления счетов, которая управляет дебетом и кредитом. В основном сумма счета-фактуры получается по сумме его дебетов, а баланс получается путем взятия суммы его кредитов и вычитания ее из общей суммы.
Я делаю это с четырьмя моделями.
- Счет
- Позиция
- Списание средств
- Кредит
Это работает через модель соединения (элемент строки), которая имеет полиморфную ассоциацию, называемую записываемой. На первый взгляд все работает правильно. Однако проверка позиции показывает, что, хотя значение recordable_id отображается правильно, значение параметра recordable_type равно нулю.
Вот разбивка кода:
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
Может ли кто-нибудь указать мне правильное направление здесь?
:as
не должно быть наhas_many :line_items
, а не наhas_many :through
ассоциациях? - person mckeed   schedule 26.01.2010