理论上我想要的是这样的:
:order => "column1 ASC, column2 DESC"
但在我的情况下, column1 实际上不是列,而是聚合值:
:order => relations.count
当其中一列实际上是聚合值时,如何按两列排序?
顺便说一句:计数器缓存不是一个选项(因为当我需要它时它已经过时了)
理论上我想要的是这样的:
:order => "column1 ASC, column2 DESC"
但在我的情况下, column1 实际上不是列,而是聚合值:
:order => relations.count
当其中一列实际上是聚合值时,如何按两列排序?
顺便说一句:计数器缓存不是一个选项(因为当我需要它时它已经过时了)
要按计算值排序/分组/等,您必须在相应的子句中指定它,在您的情况下也使用(可能是左)连接:
Something.select("somethings.*, COUNT(others.id)").
joins("LEFT JOIN others ON others.something_id = somethings.id").
group("somethings.*").
order("COUNT(others.id), column2 DESC")
:order => "COUNT(*), column2 DESC"