Как я могу присвоить псевдоним, например. includes()
?
Приводится следующее:
- Пользователь: активная модель записи
- Студент: активная модель записи, наследует пользователя (STI)
- Учитель: активная модель записи, наследует пользователя (STI)
- Проект: модель активной записи
Вот несколько примеров:
FIRST CASE (больше ассоциаций STI)
Project.all.includes(:students, :teachers).order('teachers_projects.name ASC') # order on teachers
Project.all.includes(:students, :teachers).order('users.name ASC') # order on students
Rails автоматически использует псевдоним teachers_projects
для :teachers
в SQL. Как я могу перезаписать это, чтобы я мог использовать псевдоним teachers
вместо teachers_projects
в SQL? :students
получает псевдоним users
.
Эти примеры не выполняются:
Project.all.includes(:students, :teachers).order('teachers.name ASC')
Project.all.includes(:students, :teachers).order('students.name ASC')
Project.all.includes(:students, :teachers).order('students_projects.name ASC')
SECOND CASE (одна ассоциация STI)
Если в методе includes()
используется только :students
(без :teachers
), Rails использует псевдоним имени базового класса STI users
(без _projects
) для :students
:
Project.all.includes(:students).order('users.name ASC') # order on students
Эти примеры не выполняются:
Project.all.includes(:students).order('students.name ASC')
Project.all.includes(:students).order('students_projects.name ASC')
Вопрос
Возможно, что-то вроде:
Project.all.includes(:students).alias(students: :my_alias)
RAILS ALIAS TRACKER
ТЕСТИРОВАНИЕ APP