2012-07-18 4 views
0

http://guides.rubyonrails.org/association_basics.html#self-joins에 제공된 다음 자체 조인 모델 예제가 잘못되었다고 생각합니다.guides.rubyonrails.org의 잘못된 자체 조인 모델 예제

필자는 다음과 같이 생각합니다. 어느 것이 옳고 그 이유가 무엇인지 제안 해 주시겠습니까?

class Employee < ActiveRecord::Base 
    has_many :subordinates, :class_name => "Employee", 
    belongs_to :manager, :class_name => "Employee", :foreign_key => "manager_id" 
end 

내 근거 : belongs_to 관계를 베어링 모델은 참조 모델에 대한 foreign_key를 전달합니다.

답변

0

예제가 정확합니다.

는 "규칙 구성을 통해"만트라 만이 경우 외래 키가 따라서 "#{name_of_association}_id"

belongs_to :manager, :class_name => "Employee"하지 무엇인지 지정해야합니다, 여기에 적용되는 외래 키 그러나 has_many :subordinates, :class_name => "Employee"subordinates_id을 가정 manager_id

입니다 의미 아이들의 외래 키. 왜 그렇습니까? has_many에서 :foreign_key의 정의는 자식에 대한 것이고 현재 모델의 id에 조인됩니다.

0

정확합니다. 그것이 그렇게되어야합니다.

그러나 그런 종류의 상황에서는 hierachy를 구축하기 위해 acts_as_tree 또는 유사한 것을 사용합니다. Employee.first.descendants과 같은 전화를 걸면 그 사람에게 근무하는 모든 사람을 찾을 수 있습니다.