Rails 3. 按关联模型排序

Posted

技术标签:

【中文标题】Rails 3. 按关联模型排序【英文标题】:Rails 3. sort by associated model 【发布时间】: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 查询以按字母顺序对已安排的课程进行排序?

【问题讨论】:

试试这个:***.com/questions/1530131/… 您应该发布您尝试过的内容... 【参考方案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 中仍然正确

以上是关于Rails 3. 按关联模型排序的主要内容,如果未能解决你的问题,请参考以下文章

按关联模型排序时,Sequelize 抛出错误“无法找到模型 x 的有效关联”

Rails 3 查询接口:使用关联模型

EmberJS computed.sort - 按关联的模型属性排序

Rails 仅将模型嵌套关联中的某些字段呈现为 json

复杂的 Rails 模型/关联

(rails) 按网站上的点赞数排序