我在Person模型上执行查找。我正在使用一组id作为我的Find方法的输入。该数组代表特定人的祖先,并且数组的顺序很重要。
我希望查找结果(关系)与输入祖先数组的顺序相同。不幸的是,返回的结果按ids(升序)的顺序排序。有没有办法防止这种行为,并按照ancestry_array的顺序返回结果。
模型中没有反映Ancestry顺序的属性,因此我没有看到使用order方法的直接方法。如果可能的话,我希望用铁轨上的红宝石来实现这一点。
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
答案 0 :(得分: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}}