我正在開發一款應用程序以跟蹤產品設計,並且我在協會中遇到了一些麻煩。基本上我有一個模型(大會)需要有多態關聯,但也需要能夠屬於自己。Rails - 多態自加入模型協會
爲了說明,我有三個模型:Product,Assembly和Part。
- 產品可以有許多組件。
- 裝配可以有很多零件和裝配。
- 裝配屬於產品或裝配。
- 零件屬於一個零件。
我的模型定義目前是這樣的:
product.rb
class Product < ActiveRecord::Base
belongs_to :product_family
has_many :assemblies, as: :assemblable
end
assembly.rb
class Assembly < ActiveRecord::Base
belongs_to :assemblable, polymorphic: true
has_many :parts
has_many :subassemblies, as: :assemblable
end
part.rb
class Part < ActiveRecord::Base
belongs_to :assembly
belongs_to :product_family
end
我想什麼,能夠做的是,給定名爲「top_assy」彙編:
top_assy.subassemblies.create
然而,當我嘗試,我得到了以下錯誤:
NameError: uninitialized constant Assembly::Subassembly
我清楚在這裏做錯了什麼 - 我錯過了什麼?我已經嘗試添加'class_name:'Assembly''作爲'has_many:subassemblies'命令的參數。
在此先感謝!
我認爲這基本上是我需要的東西,會產生「多態連接表」。所以它基本上是一個包含三列的連接表:「parent_type」,「parent_id」和「assembly_id」。 「parent_type」可以是「Product」或「Assembly」。 – rjblake1984