4

製品設計を追跡するアプリの作成に取り組んでいますが、関連付けに問題があります。基本的に、ポリモーフィックな関連付けが必要なモデル (アセンブリ) がありますが、それ自体に属することもできます。

説明のために、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"」を追加しようとしました。

前もって感謝します!

4

3 に答える 3