嵌套集可以有重复的子对象或多个 parent_id/root/nodes 吗?
例如,我想创建一个可以管理零件和设备的应用程序。但是,特定设备也可以具有来自其他设备的相同部件。
对此最好的方法有什么想法吗?
谢谢!!!
嵌套集可以有重复的子对象或多个 parent_id/root/nodes 吗?
例如,我想创建一个可以管理零件和设备的应用程序。但是,特定设备也可以具有来自其他设备的相同部件。
对此最好的方法有什么想法吗?
谢谢!!!
我认为您在这里需要的是一个关联类来帮助建模多对多关系。在 Rails 中,这可能看起来像这样:
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)