Model.find(array) で順序が狂う

rails 覚えたての頃に書いた以下のようなコード

def items(array)
array.map{ |i| Item.find(i) }
end

を、以下のように書き換えてハマる。

def items(array)
Item.find(array)
end

タイトルに答えを書いちゃったけど、find(array) は array の順序を保存しない。
array が sort されてれば大丈夫かと思ったが、 mysql では OK だが postgresql ではダメだった。
幸い僕のケースでは array が sort 済みのものだったので、 find(array, :order=>:id) で丸く収まったが、array が sort されてない場合には厄介そうだ。

Comment are closed.