设想情况:
我需要:
我试过了
Pupil.left_joins(:grade_progressions).where(grade_progressions: { progressable: progressable })
.order('grade_progressions.score DESC')然而,这一做法不起作用,因为它排除了任何未达到可升学年级的学生。
使用原始SQL,应该可以通过在LEFT JOIN上指定条件来实现这一点,但是我无法找到一种使用ActiveRecord对象语法来实现这一点的方法。如果可能的话,我希望避免将联接指定为字符串。
如何以这种方式编写ActiveRecord查询以通过可选的多态关联进行排序?
发布于 2018-04-10 12:01:54
Rails 5有一个本机.left_outer_joins方法。在此之前,您需要将联接指定为字符串,或者使用通常具有意外结果的.includes。
与SQL默认OUTER JOIN不同的是,INNER JOIN包含在联接表中没有匹配项的行。
https://stackoverflow.com/questions/49752702
复制相似问题