2014-11-27 2 views
0

다음 워크 플로가 있습니다. Tom은 John의 관리자입니다. John은 Bill의 관리자입니다. John은 Tom에게 직접보고하고 Bill은 Tom에게 간접적으로보고합니다. 모두 'reporting_to_id'(즉 관리자 ID) 필드가있는 사용자 모델의 인스턴스입니다. 그래서 어떤 매니저도 기자를 가질 수 있습니다. 그 기자는 자신의 기자를 가질 수 있으며, 그들 모두는 매니저에게 간접적 인 기자입니다 (current_user).레일에서 재귀 메서드

current_user.reporters으로 모든 직접 기자의 배열을받을 수 있습니다. 계층 적 수준의 수를 모르는 경우 어떻게 모든 직간접 기자를 배치 할 수 있습니까?

재귀가 도움이된다고 가정합니다.

미리 감사드립니다.

답변

0

ActiveRecord 자체 조인을 사용하여이를 수행 할 수 있습니다. 문서는 here이며,이 그들이 참조하는 예입니다

당신 모델 :

class Employee < ActiveRecord::Base 
has_many :subordinates, class_name: "Employee", 
         foreign_key: "manager_id" 

belongs_to :manager, class_name: "Employee" 
end 

과 같이 보여야 액티브 스키마/마이그레이션 :

class CreateEmployees < ActiveRecord::Migration 
def change 
    create_table :employees do |t| 
    t.references :manager 
    t.timestamps 
    end 
end 
end