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 
関連する問題