2014-10-19 76 views
0

我需要創建一種演繹查詢,其中相同的記錄被多次排序,每次的訂單都獨立於先前的訂單執行。如何兩次訂購相同的記錄集,第二個訂單獨立於第一個訂單執行?

如:

tallest_trees = Trees.order(:height => :desc).limit(10) # Gets 10 of the tallest trees out of all available trees 
tallest_trees.order(:width => :desc) # From the 10 of the tallest trees, gets the widest trees **without** any regard to their height 

我試圖做一個類似的方式如上,但結果一直是它試圖訂購,在這種情況下,樹木,同時按高度和寬度,這與我的需求相反。

關於直接使用ActiveRecord或SQL沒有任何區別。我相信答案是我必須「穩定」以前的查詢,以便第二個查詢不會繼續,而是重新命令它。

回答

0

有2種方法。第一:

base_scope = Trees.limit(10) 
tallest_trees = base_scope.order(height: :desc) 
widest_trees = base_scope.order(width: :desc) 

二 - 與reorder方法:

tallest_trees = Trees.order(height: :desc).limit(10) 
widest_trees = tallest_trees.reorder(width: :desc) 
+0

'reorder'這就是它!謝謝! – Kasperi 2014-10-19 15:13:11

相關問題