Tôi có hệ thống lập hóa đơn quản lý ghi nợ và ghi có. Về cơ bản số tiền hóa đơn thu được bằng tổng số tiền ghi nợ của nó và số dư có được bằng cách lấy tổng các khoản tín dụng của nó và trừ đi số tiền đó so với tổng số tiền.Tên/loại đường ray không hoạt động đối với một đa hình has_many: thông qua
Tôi đang làm điều này với bốn kiểu máy.
- Invoice
- mục dòng
- Debit
- Credit
Cách nó hoạt động là thông qua một tham gia mô hình (Line Item) mà có một hiệp hội đa hình được gọi là ghi. Mọi thứ dường như hoạt động bình thường ngay từ cái nhìn đầu tiên. Tuy nhiên, việc kiểm tra mục hàng cho thấy rằng trong khi recordable_id hiển thị không sao, recordable_type là không.
Dưới đây là bảng phân tích về mã:
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
bất cứ ai có thể điểm tôi vào đúng hướng ở đây?
Bạn chỉ định line_items cho tín dụng/ghi nợ như thế nào? – Nazar
Điều này xảy ra tự động thông qua has_many: thông qua. Vì vậy, khi bạn làm Invoice.last.credits << Credit.new the LineItem được tạo tự động và được xây dựng với recordable_id và invoice_id đúng. –
Không nên là ': as' trên' has_many: line_items', không phải là các liên kết 'has_many: through'? – mckeed