2012-02-21 12 views
2

私のアプリケーションには、並べ替え可能な列を持つテーブルがあります。列は、現在のモデルまたは関連するモデルの属性でソートすることができます。しかし、モデルによっては、別のモデルとの関連付けが複数ある場合もあります。リレーション属性に対するクエリの並べ替え

この例では、セクションには、それに沿ってロードする必要がある複数のリレーションがあります。 relation1とrelation2は、実際には同じデータベーステーブルのレコードです。私はクエリを実行し、先生にソートしようとすると、彼らは同じテーブルから来て、ソートのために使用されるので、実際に学生に並べ替えます。

このSQLを生成
Section.includes(:teacher, :students) 
     .order(sort_column + ' ' + sort_direction) 

SELECT DISTINCT `sections`.id 
FROM `sections` 
    LEFT OUTER JOIN `sections_students` ON `sections_students`.`section_id` = `sections`.`id` 
    LEFT OUTER JOIN `users` ON `users`.`id` = `sections_students`.`user_id` 
    LEFT OUTER JOIN `users` `teachers_sections` ON `teachers_sections`.`id` = `sections`.`teacher_id` 
ORDER BY users.first_name asc LIMIT 30 OFFSET 0 

にはどうすれば特定の関係に並べ替えることができますか?エイリアスを使ってこれを行う方法はありますか?

答えて

0

お知らせ教師の別名:あなたはそのエイリアスを使用することができるはず

LEFT OUTER JOIN `users` `teachers_sections` 

order("teachers.#{sort_column} #{sort_direction}") 
関連する問題