我正在开发一个 Rails 项目,该项目使用二元矩阵计划模式对公司结构进行建模。每个新用户都“放置”在层次结构中,如下所示:
没有平衡,必须在进入下一个之前填充所有级别。插入新成员时,只有插入顺序很重要。 我们的数据库系统是 Postgres。
我打算使用一些 gem 来帮助我实现树(Closure Tree 是一个坚定的候选人)但我不确定如何处理这个“强制二叉树”的约束(插入、删除)从左到右'模型。
我正试图弄清楚这一切,但由于我从未参与过此类实现(特别是涉及数据库),我想我可以从更有经验的程序员那里获得一些帮助,以解决常见的陷阱或我应该特别注意的地方.预计用户群会快速增长,所以我很担心性能。
所以我的问题:
- 由于我一直使用关系数据库,因此对该模式建模的最佳方式是什么?
- 是否有任何文档或 gem 可供我深入研究以了解实现我需要的所有算法的最佳方法?
提前感谢您提供任何提示/指示。
最佳答案
这是对我有用的解决方案。
创建您的 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/
关于ruby-on-rails - Rails 中的强制二进制矩阵公司结构实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24580216/