双加入查询Rails

时间:2017-03-28 22:23:47

标签: sql ruby-on-rails ruby-on-rails-3 activerecord

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

  1. 一个组织有很多工作。
  2. 作业属于一个组织,有许多JobPostings。
  3. JobPosting属于Job。
  4. Job有一个名为job_type的属性,我可以使用查询找到与具有特定job_type的作业相关的所有JobPosting:

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

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

    非常感谢任何帮助。

1 个答案:

答案 0 :(得分:6)

您可以按如下方式加入这两种关系:

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执行此操作以检查生成的查询。