0

我正在对 Person 模型进行查找。我使用一组 id 作为我的 Find 方法的输入。数组代表特定人的祖先,数组的顺序很重要。

我希望查找结果(关系)与输入祖先数组的顺序相同。不幸的是,返回的结果是按 id 的顺序(升序)排序的。有没有办法防止这种行为,并按照 ancestry_array 的顺序返回结果。

模型中没有反映祖先顺序的属性,所以我看不到使用 order 方法的直接方法。如果可能的话,我希望用 ruby​​ on rails 来实现这一点。

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
4

1 回答 1

1

我将在答案中转换上述评论。

我不知道你是否可以在 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}}
于 2013-02-05T02:43:59.000 回答