2014-03-31 117 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