2011-12-13 79 views
0

是否有可能建立一個範圍這樣我可以按預定順序加載ActiveRecord-Objects嗎?

User.where(:id => [5,4,3,2,7,1000]) 
的方式

,那

一)的結果是通過ID的順序。 (這是簡單的一部分,因爲可以只加載的記錄,並相應地對結果進行分類)

b)中的結果是不是一個數組,但在本身(棘手的部分一範圍;)

更新:僅適用於MySQL的解決方案受到歡迎。

+0

哪個db? mysql有ORDER BY FIELD。你想要一個便攜式解決方案嗎? – tokland

回答

1

我可以想到兩種方法:

(1)在數據庫中放置一個訂單列。

(2)使用原始的SQL和定製ORDER BY子句,像這樣:

order by (
    case id 
    when 5 then 0 
    when 4 then 1 
    when 3 then 2 
    when 2 then 3 
    when 7 then 4 
    when 1000 then 5 
    end 
) 

我不知道如何便攜式是。

+0

解決方案(2)適用於MySQL和SQLite3 ...對我來說足夠了! – flitzwald

0

不同的數據庫以不同的方式保存他們的數據,所以沒有人可以肯定地回答它將被排列的方式。

但是,如果你真的質疑這個問題,爲什麼不使用原始SQL,選擇每個元組並在構造長SQL查詢時將它與union併合。

相關問題