Я думаю, что вам нужен здесь ассоциативный класс, чтобы помочь моделировать отношения «многие ко многим».В рельсах это может выглядеть примерно так:
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)