双加入查询Rails

Rob*_*ers 4 sql activerecord ruby-on-rails ruby-on-rails-3

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

  1. 一个组织有很多工作.
  2. 作业属于组织,有许多JobPostings.
  3. JobPosting属于Job.

Job有一个名为的属性job_type,我可以job_type使用查询找到与具有特定作业的Job相关的所有JobPostings :

JobPosting.joins(:job).where(jobs: { :job_type => 'volunteer' })
Run Code Online (Sandbox Code Playgroud)

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

任何帮助将不胜感激.

vee*_*vee 6

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

JobPosting.
  joins(job: :organization).
  where(jobs: { job_type: 'volunteer' }, organizations: { organizations_attr1: 'value_to_test' })
Run Code Online (Sandbox Code Playgroud)

joins(job: :organization)确保你有内部之间的连接job_postings,jobs以及organizations正确的表格.如果要探索Rails如何执行连接,请尝试在rails consolewith中执行此操作.to_sql以检查生成的查询.