Rails中的递归方法

时间:2014-11-27 19:15:19

标签: ruby-on-rails recursion

我有以下工作流程。汤姆是约翰的经理。约翰是比尔的经理。约翰向汤姆(直接)报告,比尔向汤姆(间接)报告。所有这些都是用户模型的实例,其中包含" reporting_to_id' (即经理的身份)字段。所以任何经理都可以有记者,那些记者可以有自己的记者等等,所有人都是间接记者经理(current_user)。

使用current_user.reporters,我们可以收到所有直接记者的数组。如果我们不了解多个层次结构级别,我们怎样才能获得所有直接和间接记者的数组?

我认为递归可能会有所帮助。

提前致谢。

1 个答案:

答案 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