0

私の Rails db スキームには、次の構造があります。

タスクには多くのジョブがあり、ジョブは 1 つのカテゴリに属しています

私が達成したいのは、すべてのタスクを、関連するすべてのジョブをカテゴリ順にロードすることです。したがって、結果は次のようになります。

タスク1 ジョブ1 -> カテゴリ1 ジョブ3 -> カテゴリ2 ジョブ2 -> カテゴリ3

タスク 3 ジョブ 5 -> カテゴリ 1 ジョブ 9 -> カテゴリ 2 ジョブ 4 -> カテゴリ 3

注: カテゴリの順序は ID ではなく、列です。

現時点で唯一有効な解決策は、SQL ではなく Ruby でジョブを注文することですが、これはかなり悪い方法です。has_many アソシエーションの :finder_sql オプションにつまずいたところですが、それが正しい方法かどうかはわかりません。

4

1 に答える 1

3

これにより正しいSQLが生成されますが、ActiveRecordが関連付けの順序を保持するかどうかはわかりません。

Task.find(:all, :include => {:job => :category }, :order =>'tasks.id, categories.column')

于 2011-03-01T09:10:12.120 に答える