【发布时间】:2017-03-27 18:55:12
【问题描述】:
我有以下 has_many :through 情况:
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:
u = User.first
t = Term.first
u.terms << t
然后我可以成功运行u.terms。问题是如果我运行t.builders,我会得到一个空关联:
=> #<ActiveRecord::Associations::CollectionProxy []>
我很确定我错误地使用了source,但我不确定如何使用。我该如何解决这个问题?
【问题讨论】:
-
我有理由确定您在使用
inverse_of,而不是source,以填充关联的两端
标签: ruby-on-rails activerecord rails-activerecord has-many-through has-many