0

에서 일하고 통해 나는 다음과 같은 has_many이has_many는 : 상황을 통해 : 한 방향으로 만

u = User.first 
t = Term.first 
u.terms << t 

그때 성공적으로 u.terms을 실행할 수 있습니다

class User < ApplicationRecord 
    has_many :term_enrollments, foreign_key: 'builder_id' 
    has_many :terms, through: :term_enrollments 
end 

class TermEnrollment < ApplicationRecord 
    belongs_to :term 
    belongs_to :builder, class_name: 'User' 
end 

class Term < ApplicationRecord 
    has_many :builder_term_enrollments, class_name: 'TermEnrollment', foreign_key: 'builder_id' 
    has_many :builders, through: :builder_term_enrollments, source: :builder 
end 

성공적으로 다음은 term_enrollment을 만듭니다.

=> #<ActiveRecord::Associations::CollectionProxy []> 

내가 잘못 source를 사용하고 있지만이 방법을 잘 모르겠어요 확신 : 문제는 내가 t.builders을 실행하면, 난 빈 연결을 얻을 수 있습니다. 이 문제를 어떻게 해결할 수 있습니까?

+0

당신이, inverse_of'가 아닌'source''후있어 인구 협회의 양쪽 끝을 가지고 합리적으로 확신 – meagar

답변

0

:builder_term_enrollments에서 'term_id' 또는 :term_id으로 외래 키를 설정할 수 있습니까?

그러면 ActiveRecord는 해당 term_id가있는 행을 찾을 수 있습니다.

0

용어 모델은 고정 재 작성 :

class Term < ApplicationRecord 
    has_many :builder_term_enrollments, class_name: 'TermEnrollment', source: :builder 
    has_many :builders, through: :builder_term_enrollments 
end