11

假设我有两个模型:Course 和 ScheduledCourse。

Course 模型有一个 name 属性。

course has_many :scheduled coursescheduled_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 查询以按字母顺序对预定课程进行排序?

4

2 回答 2

20

尝试...

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')
于 2012-04-26T15:04:45.997 回答
12
ScheduledCourse.joins(:course).order('courses.name asc')

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

于 2012-10-24T01:06:20.547 回答