Rails 3.按关联模型排序

时间:2012-04-26 15:00:46

标签: ruby-on-rails ruby activerecord

假设我有两种模式:课程和预定课程。

课程模型具有名称属性。

当然has_many:预定课程 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

如何制作ActiveRecord查询以按字母顺序对预定课程进行排序?

2 个答案:

答案 0 :(得分:19)

...试

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

如果这不起作用,您可能需要在加入条件之前调用.all,如下所示:

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

喜欢 luacassus 说,this answer can help;我认为该答案中的语法是pre-Arel(ActiveRecord 3),但它可以完成工作。希望有所帮助!

编辑:

正如@FellowStranger所提到的,现在正确的语法似乎是

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

答案 1 :(得分:11)

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

请注意,表名应为复数形式。此代码已经过测试。