gpt4 book ai didi

ruby-on-rails - 在 Rails 中建模图形的模式

转载 作者:太空宇宙 更新时间:2023-11-03 16:33:27 24 4
gpt4 key购买 nike

我有一个数据结构,我希望在 Rails 中对其进行建模和持久化。它是自引用的,看起来很像分层树,但是每个节点可以有多个父节点和多个子节点,而不是只有一个父节点。

它可能看起来像这样(所有节点都是相同的模型):

                       Foo            Bonk
| | | |
Bar Baz Foo Bork
| |
Baz Bork

所有具有相同名称的节点实际上是同一个节点。

我还想找到包含特定“成分”的模型的所有实例。

我找到的最接近的是 https://github.com/mceachen/closure_tree但据我所知,每个节点只有一个父节点。

理想情况下,我正在寻找一种使用 ActiveRecord 实现的模式,但会考虑任何解决方案。

最佳答案

对于只有一个父节点的每个节点,这是一种很好的方法:

has_many :children, :class_name => "Node", :foreign_key => "parent_id"
belongs_to :parent, :class_name => "Node", :foreign_key => "parent_id"

如您所知,它是一个 ActiveRecord 模型,其中有一个名为 parent_id 的字段指向父节点。

对于多个父级,这可以扩展为创建多对多自引用连接。

has_and_belongs_to_many :children, :class_name => "Node",
:foreign_key => "node_id",
:association_foreign_key => "children_id",
:join_table => "children_nodes"

创建连接表,现在你应该可以为 parent 做 Node.children 和 Node.nodes 了。注意:第二部分尚未经过测试,但如果它不起作用,请告诉我。

关于ruby-on-rails - 在 Rails 中建模图形的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11830645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com