に含まれての結果を注文しようとすると、偉大行くことは、私は別のモデルに接合されているActiveRecordのモデルを複数回持っているのActiveRecord
claims = Claim.all.includes(:user, :treated_by, :person_involved)
を今私は(それらがメモリにせずに)主張をソートしたいので、私のような何かをしたい:私は使用してN + 1つのクエリを避ける含ま
Claim.all.includes(:user, :person_involved, :treated_by).order('treated_by.last_name')
しかし、私はこのように私のユーザーしない限り、テーブル名を無効なSQLを取得する:はっきりユーザーのサブセットで治療することによって順序は、例えばLAST_NAME私を助けにはなりません
Claim.all.includes(:user, :person_involved, :treated_by).order('users.last_name')
。これを正しく行うにはどうしたらいいですか?
いい回答です! 'INNER JOIN users AS treated_bys ON ... 'は、' processed_by'関連値を持つものだけ 'claim'コレクションを制限することに言及したいと思います。 'processed_by'を伴わないクレームは、データベースからフェッチされません。代わりにLEFT JOINを使用する方が安全かもしれません。 http://www.w3schools.com/sql/sql_join_left.asp – Semjon
その説明をありがとうございます@セジョン – Frost