0

Person モデルで検索を実行しています。Find メソッドの入力として ID の配列を使用しています。配列は特定の人物の祖先を表し、配列の順序は重要です。

検索結果 (関係) を入力の祖先配列と同じ順序にしたいと考えています。残念ながら、返される結果は ID の順序 (昇順) でソートされます。この動作を防ぎ、ancestry_array の順序で結果を返す方法はありますか。

Ancestry の順序を反映するモデルには属性がないため、 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 に答える