理论上我想要的是这个:
:order => "column1 ASC, column2 DESC"
但是,在我的情况下,column1实际上不是一个列,而是一个聚合值:
:order => relations.count
当其中一列实际上是一个聚合值时,如何按两列排序?
Btw:Counter-Cache不是一个选项(因为它在我需要的时候已经过时)
答案 0 :(得分:0)
:order => "COUNT(*), column2 DESC"
答案 1 :(得分:0)
要按计算值对order / group / etc进行排序,您必须在相应的子句中指定它,在您的情况下也使用(可能是左侧)连接:
Something.select("somethings.*, COUNT(others.id)").
joins("LEFT JOIN others ON others.something_id = somethings.id").
group("somethings.*").
order("COUNT(others.id), column2 DESC")