Rails 3.按关联模型排序

leo*_*nel 11 ruby activerecord ruby-on-rails

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

Course模型具有name属性.

课程has_many:预定课程scheduled_courses:belongs_to课程

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

scheduled_courses
id | course_id 
 1 | 2
 2 | 4
 3 | 1
 4 | 2
Run Code Online (Sandbox Code Playgroud)

如何创建ActiveRecord查询以按字母顺序对计划的课程进行排序?

Ben*_*ger 19

尝试...

ScheduledCourse.joins(:course).order('course.name')
Run Code Online (Sandbox Code Playgroud)

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

ScheduledCourse.all.joins(:course).order('course.name')
Run Code Online (Sandbox Code Playgroud)

luacassus说的,这个答案可以帮助 ; 我认为该答案中的语法是pre-Arel(ActiveRecord 3),但它可以完成工作.希望有所帮助!

编辑:

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

ScheduledCourse.joins(:course).order('courses.name')
Run Code Online (Sandbox Code Playgroud)


Fel*_*ger 11

ScheduledCourse.joins(:course).order('courses.name asc')
Run Code Online (Sandbox Code Playgroud)

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