В моем приложении есть таблицы с сортируемыми столбцами. Столбцы могут быть отсортированы по атрибутам настоящей модели или даже связанных моделей. Однако в некоторых случаях модель имеет несколько ассоциаций с другой моделью.
В этом примере разделы имеют несколько отношений, которые должны быть загружены вдоль него.
отношение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
Как я могу отсортировать по определенному отношению? Есть ли способ использовать псевдонимы для этого?