以两种不同的风格订购两件事

时间:2012-10-29 11:34:37

标签: ruby-on-rails ruby-on-rails-3

理论上我想要的是这个:
:order => "column1 ASC, column2 DESC"

但是,在我的情况下,column1实际上不是一个列,而是一个聚合值:
:order => relations.count

当其中一列实际上是一个聚合值时,如何按两列排序?

Btw:Counter-Cache不是一个选项(因为它在我需要的时候已经过时)

2 个答案:

答案 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")