双连接查询 Rails

Double Join Query Rails

我有三个模型,JobPosting、Job 和 Organization。关系如下:

  1. 一个组织有很多职位。
  2. 一个工作属于一个组织并且有很多 JobPostings。
  3. 一个 JobPosting 属于一个职位。

一个职位有一个名为 job_type 的属性,我可以使用以下查询找到与具有特定 job_type 的职位相关的所有 JobPosting:

JobPosting.joins(:job).where(jobs: { :job_type => 'volunteer' })

但我正在努力做的是做同样的事情,但有一个组织属性。组织有一个名为 department 的属性,我如何通过具有特定部门的工作查询与组织相关的 JobPosting。我遇到麻烦的原因是因为组织本质上是两个层次,而工作只有一个。

如有任何帮助,我们将不胜感激。

可以按如下方式加入两个关系:

JobPosting.
  joins(job: :organization).
  where(jobs: { job_type: 'volunteer' }, organizations: { organizations_attr1: 'value_to_test' })

joins(job: :organization) 确保您在 job_postingsjobsorganizations 表之间正确地进行内部联接。如果您想探索 Rails 如何执行联接,请尝试在 rails console.to_sql 中执行此操作以检查生成的查询。