2

私のアプリケーションでは、ワークフローとステップをモデル化する必要があります。ステップ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`

どうすればそれを達成できるのでしょうか?

4

1 に答える 1

1

あなたがそれを好きになるかどうかはわかりませんが、自己参照を介して可能です:

Workflow.joins{steps.workfolw.steps}.
  where{(steps.index == 1) & (steps.completed == true)} &
        (steps.workfolw.steps.index == 2) & (steps.workfolw.steps.completed == false)}.
  uniq
于 2012-06-07T11:29:43.187 に答える