我正在开发一个Rails项目,该项目使用二进制矩阵计划模式对公司的结构进行建模。每个新用户都“放置”在层次结构中,如下所示:
没有平衡,所有级别必须在移动到下一个级别之前填充。插入新手时只有插入顺序才有意义。 我们的数据库系统是Postgres。
我计划使用一些gem来帮助我实现树实现(Closure Tree是一个坚定的候选人)但是我不确定如何处理这个'强制二进制文件的约束(插入,删除)树从左到右'模型。
我正在努力解决所有这些问题,但由于我从未参与过这样的实施(特别是涉及数据库),我想我可以使用经验丰富的程序员提供的一些帮助来解决常见的陷阱,或者我应该在哪里特别注意。预计用户群会快速增长,因此我担心性能问题。
所以我的问题:
提前感谢任何提示/指示。
答案 0 :(得分:1)
这是适合我的解决方案。
创建rails应用程序并将Postgresql指定为数据库。
将acts_as_sane_tree gem添加到您的gemfile中。
使用parent_id列为您的用户生成模型 作为外键。
数据库迁移文件应如下所示
class CreateUsers < ActiveRecord::Migration[5.0]
def change
create_table :users do |t|
t.string :name
t.integer :parent_id
t.timestamps
end
end
end
您的模型应具有以下方法:
class User < ApplicationRecord
acts_as_sane_tree :order => "name"
end
您可以从以下链接中找到更多信息:
https://github.com/chrisroberts/acts_as_sane_tree
http://www.gmarik.info/blog/2012/recursive-data-structures-with-rails/
答案 1 :(得分:0)
nodes
的表格,其中的字段为:tree_id
,parent_node_id
,value
,id
然后你可以用一个查询重建这个树。要更新树,只需用树对应的树ID更新所有节点。我认为组织不会有太多员工使绩效成为制约因素。