我有一个相当奇怪的案例。我有几个通过关联绑定在一起的模型这些关联之一允许用户模型直接使用作业模型访问引用的作业数据。但是,第二种情况允许用户模型通过位置模型访问作业数据。
User has_and_belongs_to_many :jobs
User has_many :jobs through: :locations
那么我如何区分这两行代码,以便User.jobs
使用第一个关联,User.jobs_through_locations
使用第二个关联?
答案 0 :(得分:0)
如果位置有很多作业,请为第二个关联指定一个不同的名称,并告诉它位置中的哪个关联是来源。
User has_many :jobs_through_locations, through: :locations, source:
:jobs
答案 1 :(得分:0)
为第二个关联使用自定义关联名称,并使用该名称引用第三个表中的作业。
注意:source非常重要,因为您需要告诉rails在获取user_jobs时使用哪个模型。
用户
has_and_belongs_to_many:jobs
has_many:user_jobs,::: locations,:source => :作业