2017-03-28 4 views
3

세 가지 모델 인 JobPosting, Job, and Organization이 있습니다. 관계는 다음과 같습니다.Double Join Query Rails

  1. 조직에는 많은 채용 정보가 있습니다.
  2. 작업이 조직에 속하고 많은 JobPostings이 있습니다.
  3. JobPosting는 Job에 속합니다.

작업은 속성이 job_type라는 있고, 나는 특정 job_type 쿼리 사용하여 작업에 관련되어있는 JobPostings의 모든 찾을 수 있어요 :

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

그러나 나는 고군분투를 와 같은 종류의 일을하고 있지만 조직 특성. 조직에는 department이라는 속성이 있습니다. 특정 부서가있는 작업을 통해 조직과 관련된 JobPosting을 쿼리하려면 어떻게해야합니까? 제가 문제가되는 이유는 조직이 본질적으로 두 단계 위로 있기 때문입니다. 반면에 욥은 단지 하나입니다.

도움을 주시면 감사하겠습니다. 다음과 같이

답변

4

당신은이 개 관계를 가입 할 수 있습니다 :

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

joins(job: :organization) 당신은 내부가 제대로 job_postings, jobsorganizations 테이블 간의 조인이 보장합니다. rails console에서 .to_sql을 실행하여 Rails가 조인을 수행하는 방법을 탐색하려면 생성 된 쿼리를 확인하십시오.

+0

"JobPosting.joins (job : : organization) .where (조직 : {부서 : 회의}})"다음 오류가 발생합니다. PG :: InvalidTextRepresentation : ERROR : 잘못된 입력 구문 정수 : "회의실", 여기서는 ActiveRecord : 부서 속성에 대한 열거 형과 : 회의록을 옵션으로 사용하고 있습니다. 다른 질문을 참조하십시오. http://stackoverflow.com/questions/43081716/activerecordenum-pginvalidtextrepresentation-error-invalid-input -syntax –

+0

이 답변을 주셔서 감사합니다, 그것은 내 질문에 대답, 그냥 또 다른 질문을 만들었습니다. –