2011-12-15 2 views
2

Ruby on Rails 3.1에서 첫 번째 앱을 만들고 있습니다 ....이 관계를 올바르게 설정 했습니까? 본질적으로 학생/고객은 로그인하여 교사를 평가할 수 있습니다. 클라이언트는 많은 교사를 가질 수 있고 교사는 많은 클라이언트를 가질 수 있습니다. 각 고객은 특정 교사 (교사가 고객을 평가할 수 없음)에 대한 등급을 만들 수 있습니다. 평점은 선택 사항입니다.Ruby on Rails 3.1 :이 관계를 올바르게 설정하고 있습니까?

나는 다양한 클라이언트로부터 교사의 평점을 표시 할 수 있으며 또한 클라이언트가 로그인하여 그들이 가지고있는 모든 교사를 평가할 수있게하려고합니다.

class Client < ActiveRecord::Base 
    has_many :ratings 
    has_and_belongs_to_many :teachers 
end 

class Teacher < ActiveRecord::Base 
    has_many :ratings 
    has_and_belongs_to_many :clients 
end 

class Rating < ActiveRecord::Base 
    belongs_to :teacher 
    belongs_to :client 
end 

답변

4

난 당신 만의 모델을 가입 데이터베이스 테이블이 아닌 레일 모델이있을 때 has_and_belongs_to_many의 사용이 사용되어야한다고 말하고 싶지만. 귀하의 경우, 등급이라는 모델이 있기 때문에 has_many, :through을 사용하는 것이 더 낫다고 말하고 싶습니다.

는 다음과 같이 당신의 교사 및 클라이언트 모델을 변경, 그것을 달성하기 :

class Client < ActiveRecord::Base 
    has_many :ratings 
    has_many :teachers, :through => :ratings 
end 

class Teacher < ActiveRecord::Base 
    has_many :ratings 
    has_many :clients, :through => :ratings 
end 

평가 모델은 어떤 변화를 필요로하지 않습니다.

+0

고객이 has_many를 사용할 수 있다고 생각하지 않아서 고생 중이었습니다. 클라이언트가 선생님을 평가하지 않을 가능성이 있기 때문입니다.하지만 내 생각에는 오류가 나타납니다. –