2014-03-31 54 views
0

我在我的奖励表中有2列:排名(整数)和名称(字符串)。我想要创建一个范围,该范围显示排序列以升序(1,2,3 ...)填充的所有记录,然后剩下的记录没有按照名称升序显示的排名(A,b,C),所以它看起来像这样:Rails + Activerecord:如何先显示“排名为ASC”的记录,然后显示其余记录“名称ASC”?

  1. 排名:1,名称: “ZZ”
  2. 排名:2,名称: “AAA”
  3. 排名:无,名称: “BBBB”
  4. 排名:无,名称: “CCC”
  5. 排名:无,名称: “DDD”
  6. 等...

这似乎并不工作:scope :book_form_sort_order, -> { order("ranking ASC, name ASC").group(:ranking) }

回答

0
scope :book_form_sort_order, -> { order("ranking IS NULL, ranking ASC, name ASC") } 
+0

人照顾解释为什么这个答案的作品?我不明白。那不是把所有的排名==零记录放在第一位?为什么它按照我想要的方式行事? – Edmund