当它也属于另一个模型时,如何创建自连接项?
How do I create a self join item when it also belongs to another model?
我正在尝试为名为:子系统的模型建立自连接关系。在这种情况下,子系统表示 java 包、class 或方法。
我已经阅读了 rails 文档,在那里我看到我可以像这样使用它:
class Subsystem < ActiveRecord::Base
has_many :child_subsystems, class_name: "Subsystem",
foreign_key: "parent_id"
belongs_to :parent, class_name: "Subsystem"
end
我还查看了几个示例,其中大多数情况下都没有描述“创建部分”。
我的问题是我正在寻找创建子系统的最佳方法,因为:
子系统模型也属于一个项目。
现在我创建了如下子系统:
project.subsystems.create(params)
我希望这张图片能让它更好地理解。一个项目,可以有0到多个子系统,每个子系统也可以有0到多个子系统。
我看过自连接的示例,其中人们使用构建创建项目关系,但我不确定如何将其与我现有的创建相结合:project.subsystems.create。
有人可以帮帮我吗?提前致谢!
您创建自加入协会的方式非常正确。
如果要创建属于项目的子系统,可以执行 project.subsystems.create(...)
,如果要创建属于子系统的子系统,可以执行 subsystem.child_subsystems.create(..)
。您有效地调用了模型中定义的关联的名称(复数表示有很多关联)。
构建和创建方法之间的区别在于构建有效地调用 new
而创建调用 new
和 save
。当您创建或构建与模型中定义的其他实例相关联的实例时,返回的对象将包含构建或创建它们的记录的外键。
我正在尝试为名为:子系统的模型建立自连接关系。在这种情况下,子系统表示 java 包、class 或方法。 我已经阅读了 rails 文档,在那里我看到我可以像这样使用它:
class Subsystem < ActiveRecord::Base
has_many :child_subsystems, class_name: "Subsystem",
foreign_key: "parent_id"
belongs_to :parent, class_name: "Subsystem"
end
我还查看了几个示例,其中大多数情况下都没有描述“创建部分”。 我的问题是我正在寻找创建子系统的最佳方法,因为: 子系统模型也属于一个项目。 现在我创建了如下子系统:
project.subsystems.create(params)
我希望这张图片能让它更好地理解。一个项目,可以有0到多个子系统,每个子系统也可以有0到多个子系统。
我看过自连接的示例,其中人们使用构建创建项目关系,但我不确定如何将其与我现有的创建相结合:project.subsystems.create。
有人可以帮帮我吗?提前致谢!
您创建自加入协会的方式非常正确。
如果要创建属于项目的子系统,可以执行 project.subsystems.create(...)
,如果要创建属于子系统的子系统,可以执行 subsystem.child_subsystems.create(..)
。您有效地调用了模型中定义的关联的名称(复数表示有很多关联)。
构建和创建方法之间的区别在于构建有效地调用 new
而创建调用 new
和 save
。当您创建或构建与模型中定义的其他实例相关联的实例时,返回的对象将包含构建或创建它们的记录的外键。