0

ネストされたセットは、重複する子オブジェクトまたは複数のparent_id/root/nodes を持つことができますか?

例えば、部品や設備を管理できるアプリケーションを作りたい。ただし、特定の機器は、他の機器からの同じ部品を持つこともできます。

これに対する最善のアプローチについて何か考えはありますか?

ありがとうございました!!!

4

1 に答える 1

0

ここで必要なのは、多対多の関係をモデル化するための関連付けクラスだと思います。レールでは、これは次のようになります。

class Equipment < ActiveRecord::Base
  has_many :part_relationships
  has_many :parts, :through => :part_relationships
end

class Part < ActiveRecord::Base
  has_many :part_relationships
  has_many :equipment, :through => :part_relationships
end

class PartRelationship < ActiveRecord::Base
  belongs_to :equipment
  belongs_to :part
end

これをモデル化する方法は他にもありますが (たとえば、ツリー型構造を使用する)、「セット」が必要な場合は、この方法を使用します。

これが完了すると、次のようなことができます。

e = Equipment.find(:first)
e.parts # Returns all the parts on this equipment, including shared

p = Part.find(:first)
p.equipment # Returns all equipment this part features in.

# Create a new relationship between e and p
PartRelationship.create(:equipment => e, :part => p)
于 2011-02-20T09:56:06.027 に答える