我有一个管理借方和贷方的发票系统。基本上,发票金额是通过其借记金额获得的,余额是通过取得其信用总额并将其减去总金额得出的。Rails类名/类型不适用于多态has_many:通过
我正在用四个模型做这个。
- 发票
- 行项目
- 借记
- 信用
它的工作原理是通过一个连接模型(行项目)的方式,具有多态关联叫做录制。一切似乎乍一看正常工作。 但是,检查订单项显示,虽然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
任何人都可以点我到这里的正确方向?
如何将line_items分配给信用卡/借记卡? – Nazar 2010-01-23 16:20:02
这会通过has_many:through自动发生。因此,当您执行Invoice.last.credits << Credit.new时,将自动生成LineItem并使用正确的recordable_id和invoice_id进行构建。 – 2010-01-23 22:55:46
':as'不应该放在'has_many:line_items'上,而不是'has_many:through'关联? – mckeed 2010-01-25 22:58:46