# CASE ONE (single STI model include) # This examples works: Project.all.includes(:students).order('users.name ASC') # order on students Project.all.joins(:students).order('users.name ASC') # order on students # This examples fails Project.all.includes(:students).order('students.name ASC') Project.all.includes(:students).order('students_projects.name ASC') Project.all.joins(:students).order('students.name ASC') Project.all.joins(:students).order('students_projects.name ASC') # CASE TWO (double STI model include with same base model) # This examples works: Project.all.includes(:students, :teachers).order('users.name ASC') # order on students Project.all.includes(:students, :teachers).order('teachers_projects.name ASC') # order on teachers Project.all.includes(:students, :stories).order('tasks.name ASC') # order on stories Project.all.joins(:students, :teachers).order('users.name ASC') # order on students Project.all.joins(:students, :teachers).order('teachers_projects.name ASC') # order on teachers Project.all.joins(:students, :stories).order('tasks.name ASC') # order on stories # This examples fails: 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') Project.all.includes(:students, :stories).order('stories.name ASC') Project.all.joins(:students, :teachers).order('teachers.name ASC') Project.all.joins(:students, :teachers).order('students.name ASC') Project.all.joins(:students, :teachers).order('students_projects.name ASC') Project.all.joins(:students, :stories).order('stories.name ASC')