在我的应用程序中,我必须建模:工作流和步骤;步骤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`
知道如何实现吗?