Jak mogę podać nazwę aliasu dla np. includes()
? Obserwowany jest podana:Szyny 4 - jak nadać nazwy aliasom włączeń() i sprzężeń() w zapytaniach aktywnych rekordów
- użytkownika: aktywny modelu rekord
- Student: aktywny modelu rekord, dziedziczy z Użytkownikiem (STI)
- Nauczyciel: aktywny modelu rekord, dziedziczy z Użytkownikiem (STI)
- Projektu : Active record modelowe
Oto kilka przykładów:
Pierwszy przypadek (więcej stowarzyszenia 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 używa automatycznie alias nazwy teachers_projects
dla :teachers
w SQL. Jak mogę to zastąpić, aby móc używać w języku SQL nazwy aliasu teachers
zamiast teachers_projects
? :students
otrzymuje nazwę aliasu users
.
Przykłady te nie:
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')
drugim przypadku (jedno stowarzyszenie STI)
Jeśli użyć tylko :students
(bez :teachers
) w metodzie includes()
, szyn wykorzystuje alias STI nazwa klasy podstawowej users
(bez dołączonej _projects
) dla :students
:
Project.all.includes(:students).order('users.name ASC') # order on students
Przykład ten nie powiedzie się:
Project.all.includes(:students).order('students.name ASC')
Project.all.includes(:students).order('students_projects.name ASC')
PYTANIE
może istnieć coś takiego:
Project.all.includes(:students).alias(students: :my_alias)
SZYNY alias Tracker
BADANIE APP
https://gist.github.com/phlegx/add77d24ebc57f211e8b
https://github.com/phlegx/rails_query_alias_names
Czy wypróbowałeś coś w stylu Project.joins (: nauczyciele). Gdzie ...... – Leon
Jeśli otrzymasz odpowiedź, proszę _notify_ me, abym mógł zobaczyć odpowiedź. –
Czy możesz również podać Gist, aby pokazać definicje modeli, migracje i niektóre dane. Czy mogę skonfigurować i spróbować zrobić? –