Rails 3. sort by associated model

activerecord, ruby, ruby-on-rails

Solution

Try...

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

If this doesn't work, you may need to call `.all` before your joins condition, like so:

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

Like luacassus said, this answer can help; I think the syntax in that answer is pre-Arel (ActiveRecord 3), but it'll get the job done. Hope that helps!

EDIT:

As mentioned by @FellowStranger, the correct syntax nowadays seems to be

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

Problem

Let's say I have two models: Course and ScheduledCourse. The Course model has a name attribute. course has_many :scheduled courses scheduled_courses :belongs_to course ``` courses id | name 1 | biology 2 | history 3 | chemistry 4 | literature scheduled_courses id | course_id 1 | 2 2 | 4 3 | 1 4 | 2 ``` How can I make an ActiveRecord query to sort the scheduled courses alphabetically?

Original source

Related problems