ruby on rails-如何使Find结果的顺序与Array输入的顺序匹配



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

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

模型中没有反映Ancestry顺序的属性,所以我看不到使用order方法的直接方法。如果可能的话,我希望用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

我将在回答中转换上述注释。

我不知道你是否可以在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}}

相关内容

  • 没有找到相关文章

最新更新