是否有可能建立一個範圍這樣我可以按預定順序加載ActiveRecord-Objects嗎?
User.where(:id => [5,4,3,2,7,1000])
的方式
,那
一)的結果是通過ID的順序。 (這是簡單的一部分,因爲可以只加載的記錄,並相應地對結果進行分類)
b)中的結果是不是一個數組,但在本身(棘手的部分一範圍;)
更新:僅適用於MySQL的解決方案受到歡迎。
是否有可能建立一個範圍這樣我可以按預定順序加載ActiveRecord-Objects嗎?
User.where(:id => [5,4,3,2,7,1000])
的方式
,那
一)的結果是通過ID的順序。 (這是簡單的一部分,因爲可以只加載的記錄,並相應地對結果進行分類)
b)中的結果是不是一個數組,但在本身(棘手的部分一範圍;)
更新:僅適用於MySQL的解決方案受到歡迎。
我可以想到兩種方法:
(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
)
我不知道如何便攜式是。
解決方案(2)適用於MySQL和SQLite3 ...對我來說足夠了! – flitzwald
不同的數據庫以不同的方式保存他們的數據,所以沒有人可以肯定地回答它將被排列的方式。
但是,如果你真的質疑這個問題,爲什麼不使用原始SQL,選擇每個元組並在構造長SQL查詢時將它與union併合。
哪個db? mysql有ORDER BY FIELD。你想要一個便攜式解決方案嗎? – tokland