在Rails中以递归方式获取记录

时间:2019-05-03 05:27:44

标签: sql ruby-on-rails ruby postgresql

在我的应用程序中,可以执行以下操作找到一名员工的所有团队报告人

User.where(primary_reporter: "some unique code of a user")

其中主要报告者是需要获取其团队报告者的用户。

但是,我现在试图递归地找到所述用户的报告人及其团队成员的报告人,以形成层次结构图。在那里找不到任何东西。

我的用户模型是这样:

class User
  has_many :reportees, lambda { |user| includes(:actor).where [" . 
  (users.status = 1)"] }, class_name: 'User', foreign_key: 
  'primary_reporter'
end

class Actor
  has_one: user
end

我正在将postgres用于数据库

1 个答案:

答案 0 :(得分:0)

如果您想在带有rails的postgres中实现分层实现,则可以尝试在postgres中使用ltree扩展,在那里您也可以使用索引(用于快速查询)。此外,我们还有红宝石宝石,使用该宝石我们可以轻松地进行查询。

参考

Postgres:https://www.postgresql.org/docs/9.1/ltree.html

路轨:https://github.com/cfabianski/ltree_hierarchy