2012-01-11 3 views
1

레일에 모델이 있습니다. 다른 사용자와의 관계를 갖고 싶은 User라고 말하면됩니다.루비 관계 같은 모델 사이

사용자 A,이 관계는 일대이고 사용자 C 및 D.

의 보스가 될 수있는 사용자 B와 사용자 B의 보스 수있다. 한 사용자가 여러 사용자 위에 설 수 있습니다.

어떻게하면 좋을까요?
내 사용자 모델은 현재 boss_id이라는 ID이며, 사용자가 먹이 사슬의 최상위에 있으면 nil이됩니다.

class User < ActiveRecord::Base 

    has_many :users #People beneath the user 
    belongs_to :user 
end 

을하지만 지금은 이름으로 관계를 사용하려면 :

내 활성 기록 클래스는 다음과 같습니다. bossfollowers이라고합시다.

어떻게하면됩니까? 당신이 가끔 관계를 가져야한다 모델을 찾을 것입니다 그것은 자기라고

class User < ActiveRecord::Base 

    belongs_to :boss, :class_name => 'User' 
    has_many :followers, :class_name => 'User', :foreign_key => :boss_id 

end 

답변

6

는 같을 것이다 방법 자신에게. 예를 들어 모든 직원을 단일 데이터베이스 모델에 저장하고 관리자와 부하 직원 간의 관계 추적이 가능하도록 할 수 있습니다. 이 상황 자체에 합류 단체로 모델링 할 수 있습니다

직원 예 :이 설정으로

class Employee < ActiveRecord::Base 

    has_many :subordinates, :class_name => "Employee" 
    belongs_to :manager, :class_name => "Employee", :foreign_key => "manager_id" 

end 

, 당신은 employee.manager @ employee.subordinates @를 검색 할 수 있습니다.

1

자체가 데이터 모델을 설계 할

을 조인 조인 다음

+0

리플렉션 사이트 http://guides.rubyonrails.org/association_basics.html#self-joins –