首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过与ActiveRecord的可选关联订购

如何通过与ActiveRecord的可选关联订购
EN

Stack Overflow用户
提问于 2018-04-10 11:40:42
回答 1查看 151关注 0票数 2

设想情况:

  • 小学生有许多年级进步。
  • 等级级数属于多态累进(主题或主题)和分数(十进制)。
  • 小学生可能还没有记录所有进步的年级进展情况。

我需要:

  • 按年级顺序排列的学生名单(最高第一名)。
  • 没有成绩的学生应该排在最后。
  • 如果一个学生有多个可进步的分数,那么应该使用最近的。

我试过了

代码语言:javascript
复制
Pupil.left_joins(:grade_progressions).where(grade_progressions: { progressable: progressable })
                                     .order('grade_progressions.score DESC')

然而,这一做法不起作用,因为它排除了任何未达到可升学年级的学生。

使用原始SQL,应该可以通过在LEFT JOIN上指定条件来实现这一点,但是我无法找到一种使用ActiveRecord对象语法来实现这一点的方法。如果可能的话,我希望避免将联接指定为字符串。

如何以这种方式编写ActiveRecord查询以通过可选的多态关联进行排序?

EN

回答 1

Stack Overflow用户

发布于 2018-04-10 12:01:54

Rails 5有一个本机.left_outer_joins方法。在此之前,您需要将联接指定为字符串,或者使用通常具有意外结果的.includes

与SQL默认OUTER JOIN不同的是,INNER JOIN包含在联接表中没有匹配项的行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49752702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档