Rails LEFT OUTER JOIN,两个表都带有where子句

时间:2015-05-26 15:27:11

标签: ruby-on-rails

我有一个名为jobs的表,与一个名为job_request的表有关系。

enter image description here

我正在尝试从作业表中获取所有等待状态的作业。我还想要包含job_request表中的记录,其中user_id等于特定用户。

这是缺少最后一个where子句的代码,它给出了每个作业的所有请求:

@jobs = Job.includes(:job_requests).where(:status => 'waiting')

换句话说,我希望执行以下SQL子句:

SELECT "jobs".* FROM "jobs" 
LEFT OUTER JOIN "job_requests" ON "job_requests"."job_id" = "jobs"."id" 
WHERE (jobs.status = 'waiting' OR job_requests.user_id = 1)

2 个答案:

答案 0 :(得分:1)

如果我找到你的话,这是你的询问。

@jobs = Job.includes(:job_requests)
           .where('jobs.status = ? OR job_requests.user_id = ?', 'waiting', api_current_user.id)
           .references(:job_requests)

答案 1 :(得分:0)

对于AND条件,您需要编写我相信的SQL:

uninstall()