在与Squeel相同的关联上执行多个连接

在我的应用程序中,我必须建模:工作流程和步骤; 步骤belongs_to工作流程和工作流程has_many步骤。 步骤具有索引和布尔状态(“已完成”)。 我想检索其步骤1已完成且步骤2未完成的工作流程,即SQL中的类似内容:

 SELECT * FROM workflows w INNER JOIN steps s1 ON s1.workflow_id = w.id INNER JOIN steps s2 ON s2.workflow_id = w.id WHERE s1.index = 1 AND s1.completed = 1 AND s2.index = 2 AND s2.completed = 0 

我试图用Squeel表达这个查询,但它似乎不允许在同一个关联上进行多个连接:我找不到命名连接的方法,当我输入类似这样的内容时: Workflow.joins{steps}.joins{steps} ,生成的SQL就是:

 SELECT `workflows`.* FROM `workflows` INNER JOIN `workflow_steps` ON `workflow_steps`.`workflow_id` = `workflows`.`id` 

知道如何实现这一目标吗?

我不知道你是否会喜欢它,但它可以通过自我引用:

 Workflow.joins{steps.workfolw.steps}. where{(steps.index == 1) & (steps.completed == true)} & (steps.workfolw.steps.index == 2) & (steps.workfolw.steps.completed == false)}. uniq