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 的有效关联”