我在Person模型上執行查找。我使用一個ID數組作爲Find方法的輸入。該數組代表特定人員的祖先,數組的順序非常重要。我如何使查找結果的順序匹配數組輸入的順序
我希望查找結果(關係)與輸入祖先數組的順序相同。不幸的是,返回的結果按照ID(升序)的順序排序。有沒有辦法來防止這種行爲,並已按照ancestry_array的順序返回結果。
模型中沒有反映Ancestry順序的屬性,所以我沒有看到直接使用順序方法的方法。如果可能的話,我希望能夠在rails上使用ruby來實現這一點。
ancestry_array = Array.new
ancestry_array = [23,45,89,12,90,5]
Person.find(23,45,89,12,90,5)
returned order of relation: 5,12,23,45,89,90
desired order of returned relation: 23,45,89,12,90,5
請看看這個線程http://stackoverflow.com/問題/ 866465/sql-order-by-the-value-list – jvnill
我真的不知道你是否可以用SQL來做這件事......但是這對你的情況有效嗎? 'ancestry_array = [23,45,89,12,90,5] r = Person.find(ancestry_array) results = ancestry_array.map {| id | r.detect {| P | p.id == id}}' – Kaeros