双连接查询 Rails
Double Join Query Rails
我有三个模型,JobPosting、Job 和 Organization。关系如下:
- 一个组织有很多职位。
- 一个工作属于一个组织并且有很多 JobPostings。
- 一个 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_postings
、jobs
和 organizations
表之间正确地进行内部联接。如果您想探索 Rails 如何执行联接,请尝试在 rails console
和 .to_sql
中执行此操作以检查生成的查询。
我有三个模型,JobPosting、Job 和 Organization。关系如下:
- 一个组织有很多职位。
- 一个工作属于一个组织并且有很多 JobPostings。
- 一个 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_postings
、jobs
和 organizations
表之间正确地进行内部联接。如果您想探索 Rails 如何执行联接,请尝试在 rails console
和 .to_sql
中执行此操作以检查生成的查询。