Rails协会令人困惑

时间:2017-11-11 09:55:57

标签: ruby-on-rails activerecord associations

我有4个模型,分别是CompanyCandidateJobApplication

Company

has_many :candidates
has_many :jobs

Candidate

belongs_to :company
has_one :application

Jobs

belongs_to :company
has_many :applications

Application

belongs_to :candidate
belongs_to :job

我不确定CandidateJobsApplication之间的关系是否正确。如果有人能提出一些改进建议,那就太好了。谢谢。

2 个答案:

答案 0 :(得分:1)

你走在正确的轨道上。添加间接关联也可以让你查询层次结构:

class Company < ApplicationRecord
  has_many :jobs
  has_many :applications, through: :jobs
  has_many :candidates, through: :applications
end

class Job < ApplicationRecord
  belongs_to :company
  has_many :applications
  has_many :candidates, through: :applications
end

class Application  < ApplicationRecord
  belongs_to :candidate
  belongs_to :job
  has_one :company, through: :job
end

class Candidate < ApplicationRecord
  has_many :applications
  has_many :jobs, through: :applications
  has_many :companies, through: :jobs
end

答案 1 :(得分:0)

我认为建立活跃记录协会的最简单方法是想象你在现实生活中的联想。在这种情况下,公司有几个工作,每个工作有几个应用程序,每个应用程序有一个候选人。

因此关系将是

for Company

has_many :jobs

for Job

belongs_to :company
has_many :applications

申请

belongs_to :job
has_one :candidate

候选人

belongs_to :application