【问题标题】:Rails 3. sort by associated modelRails 3. 按关联模型排序
【发布时间】:2012-04-26 15:00:46
【问题描述】:

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

课程模型有一个名称属性。

course has_many :预定课程 schedule_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

如何进行 ActiveRecord 查询以按字母顺序对已安排的课程进行排序?

【问题讨论】:

标签: ruby-on-rails ruby activerecord


【解决方案1】:

试试……

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')

【讨论】:

    【解决方案2】:
    ScheduledCourse.joins(:course).order('courses.name asc')
    

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

    【讨论】:

    • 这个答案更正确,要么它应该被选为接受的答案,要么Ben Kreeger给出的答案需要编辑。
    • 并且在 Rails 7 中仍然正确
    猜你喜欢
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多