Rails 3. Сортировка по соответствующей модели

Скажем, у меня есть две модели: Course and ScheduledCourse.

Модель курса имеет атрибут имени.

курс has_many: запланированные курсы schedule_courses: принадлежит к курсу

courses
id | name
 1 | biology
 2 | history
 3 | chemistry
 4 | literature

scheduled_courses
id | course_id 
 1 | 2
 2 | 4
 3 | 1
 4 | 2

Как я могу сделать запрос ActiveRecord для сортировки запланированных курсов по алфавиту?

Ответ 1

Try...

ScheduledCourse.joins(:course).order('course.name')

Если это не сработает, вам может потребоваться вызвать .all до того, как ваше условие соединения будет выглядеть следующим образом:

ScheduledCourse.all.joins(:course).order('course.name')

Как сказал luacassus, этот ответ может помочь; Я думаю, что синтаксис в этом ответе - pre-Arel (ActiveRecord 3), но он выполнит эту работу. Надеюсь, что это поможет!

ИЗМЕНИТЬ:

Как уже упоминалось @FellowStranger, правильный синтаксис в настоящее время кажется

ScheduledCourse.joins(:course).order('courses.name')

Ответ 2

ScheduledCourse.joins(:course).order('courses.name asc')

Обратите внимание, что имя таблицы должно быть во множественном числе. Этот код проверен.