gpt4 book ai didi

ruby-on-rails - 嵌套哈希的邻接数据结构

转载 作者:数据小太阳 更新时间:2023-10-29 08:09:01 25 4
gpt4 key购买 nike

我在 rails 中有以下模型:

class Model < ActiveRecord::Base
# id — integer
# name — string
# model_id — integer

belongs_to :parent, class_name: 'Model', foreign_key: 'model_id'
has_many :children, class_name: 'Model', foreign_key: 'model_id'
end

我正在使用可以具有无限深度的邻接结构。我在使用递归选择的 Postgres 数据库上。

获取对象的嵌套散列的最明智的方法是什么?我试图选择 Model 的实例并对它们进行排序,但无法将其转化为任何可用的结果。

假设我的数据库中保存了四个 Model 实例:Model_1Model_2Model_3模型_4Model_3Model_2 的子级,Model_4Model_3 的子级。

这是我试图实现的输出(Model 实例的嵌套哈希):

{
#<Model_1...> => {},
#<Model_2...> => {
#<Model_3...> => {
#<Model_4...> => {}
}
}
}

有什么想法吗?

更新 Tree 已经恢复——作为 CollectionProxy、Relation 或任何其他类似数组的数据结构。我不想将该树分类为嵌套哈希的哈希。

最佳答案

我将其命名为 parent_id 字段。

  belongs_to :parent, class_name: "Model"
has_many :children, class_name: "Model", foreign_key: "parent_id"

当你有散列时,你会使用sortsort_by:

http://www.ruby-doc.org/core-2.1.0/Enumerable.html#method-i-sort_by

def sort(hash)
hash.sort { |m1, m2| m1.id <=> m2.id }
sort(hash.children)
end

关于ruby-on-rails - 嵌套哈希的邻接数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20815817/

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