Как я могу присвоить псевдоним, например. 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