【发布时间】:2012-02-21 04:17:33
【问题描述】:
我的应用程序有带有可排序列的表。可以根据当前模型甚至相关模型的属性对列进行排序。但是,在某些情况下,一个模型与另一个模型有多个关联。
在此示例中,Section 具有多个必须与其一起加载的关系。 关系 1 和关系 2 实际上是来自同一个数据库表的记录。如果我运行查询并尝试对教师进行排序,它实际上会对学生进行排序,因为他们来自同一张表,这就是用于排序的内容。
Section.includes(:teacher, :students)
.order(sort_column + ' ' + sort_direction)
生成此 SQL:
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
如何对特定关系进行排序?有没有办法使用别名来做到这一点?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 activerecord