2010-06-23 2 views
0

레일스에서 ​​다소 복잡한 관계를 만들려고 노력하고 있으며 그렇게하는 데 가장 좋은 방법을 찾는 데 어려움을 겪고 있습니다. 각 사용자가 선생님과 학생으로 활동하는 Users 테이블이 있습니다. 나는 has_many "students"(그냥 사용자이기도 함)와 has_many "teachers"(그냥 사용자이기도 함)를 갖고 싶습니다. 서브 클래 싱이나 단일 테이블 상속을하고 싶지 않습니다. 나는 단지 사용자간에 두 가지 many_to_many를 원한다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 이것은 나쁜 생각입니까? 더 나은 해결책이 있습니까?Ruby On Rails - 동일한 테이블 사이에 많은 것을 다수

+1

이것은 많은 아이디어가 아니라 많은 것을위한 표준 재료를 따르지만 다른 클래스 대신 동일한 클래스를 사용합니다. class_name 또는 : class라는 관계에 대한 수정자가 있습니다. –

답변

5

당신이 설정 할당 모델 수있을로 사용한다 당신이 다른 모든 대다 관계 :

class User < ActiveRecord::Base 
    has_many :student_teacher_assignments, :class_name => "StudentTeacherAssignment", :foreign_key => "student_id" 
    has_many :teachers, :through => :student_teacher_assignments 
    has_many :teacher_student_assignments, :class_name => "StudentTeacherAssignment", :foreign_key => "teacher_id" 
    has_many :students, :through => :teacher_student_assignments 
end 

class StudentTeacherAssignment < ActiveRecord::Base 
    belongs_to :student, :class_name => "User" 
    belongs_to :teacher, :class_name => "User" 
end 

내가 좀 덜 유사하게 할당의 이름을 변경 것이며, 더 의미가 있지만 개념은 동일하게 유지되어야합니다.

+0

Ahhh, 내가 뭘 하려는지 거의 알지 못했지만 약간 잘못하고 있었다. 이것은 잘 작동합니다. 감사! –