私のアプリケーションでは、ワークフローとステップをモデル化する必要があります。ステップ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}
。
SELECT `workflows`.* FROM `workflows`
INNER JOIN `workflow_steps` ON `workflow_steps`.`workflow_id` = `workflows`.`id`
どうすればそれを達成できるのでしょうか?