我有以下工作流程。汤姆是约翰的经理。约翰是比尔的经理。约翰向汤姆(直接)报告,比尔向汤姆(间接)报告。所有这些都是用户模型的实例,其中包含" reporting_to_id' (即经理的身份)字段。所以任何经理都可以有记者,那些记者可以有自己的记者等等,所有人都是间接记者经理(current_user)。
使用current_user.reporters
,我们可以收到所有直接记者的数组。如果我们不了解多个层次结构级别,我们怎样才能获得所有直接和间接记者的数组?
我认为递归可能会有所帮助。
提前致谢。
答案 0 :(得分:0)
您可以使用ActiveRecord自联接完成此操作。文档为here,这是他们引用的示例:
你建模:
class Employee < ActiveRecord::Base
has_many :subordinates, class_name: "Employee",
foreign_key: "manager_id"
belongs_to :manager, class_name: "Employee"
end
您的ActiveRecord架构/迁移应如下所示:
class CreateEmployees < ActiveRecord::Migration
def change
create_table :employees do |t|
t.references :manager
t.timestamps
end
end
end