Borçları ve kredileri yöneten bir faturalandırma sistemim var. Temel olarak fatura tutarı borçlarının toplamı ile elde edilir ve bakiye, kredilerinin toplamı alınarak ve toplam tutara karşı çıkarılarak elde edilir.Sınıf adı/türü bir polimorfik has_many için çalışmıyor:
Bunu dört modelle yapıyorum. Bir polimorfik ilişki vardır
- Fatura
- Satır Öğesi
- Borç
- Kredi
bir katılmak modeli (Satır Öğesi) yoluyladır işler böyle Kaydedilebilir aradı. Her şey ilk bakışta düzgün çalışıyor gibi görünüyor. Ancak, satır öğesinin incelenmesi, kaydedilebilir_kimliği iyi gösterirken, kaydedilebilir_tür'ün sıfır olduğunu gösterir.
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
kimse burada doğru yöne işaret edebilir: Burada
bir kodun aşağı kırılma nedir?
Kredi/Borç'a line_items nasıl atanır? – Nazar
Bu, otomatik olarak has_many: yoluyla gerçekleşir. Böylece Invoice.last.credits << Credit.new yaptığınızda, LineItem otomatik olarak oluşturulur ve doğru recordable_id ve invoice_id ile oluşturulur. –
": has_many: line_items" de değil, "has_many: through" dernekleri değil mi? – mckeed