製品設計を追跡するアプリの作成に取り組んでいますが、関連付けに問題があります。基本的に、ポリモーフィックな関連付けが必要なモデル (アセンブリ) がありますが、それ自体に属することもできます。
説明のために、Product、Assembly、および Part の 3 つのモデルがあります。
- 製品は、多くのアセンブリを持つことができます。
- アセンブリには、多くのパーツとアセンブリを含めることができます。
- アセンブリは製品またはアセンブリに属します。
- パーツはアセンブリに属します。
私のモデル定義は現在次のようになっています。
product.rb
class Product < ActiveRecord::Base
belongs_to :product_family
has_many :assemblies, as: :assemblable
end
アセンブリ.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: 初期化されていない定数 Assembly::Subassembly
私は明らかにここで何か間違ったことをしています - 私は何が欠けていますか? 「has_many :subassemblies」コマンドの引数として「class_name: "Assembly"」を追加しようとしました。
前もって感謝します!