次の方法で取得した既存のアクティブレコード配列があります。
@posts = Post.where(["created_at > ?", n_days.days.ago])
そして、複数の列からリアルタイムで計算する必要がある値に基づいて、この配列を注文したいと思います。
posts_array = posts.map { |p| [p.id, f(t, p.x,p.y)] }
これにより、 のような配列が得られます。これを[[1,20],[2,11],[3,14], ...]
関数の値に基づいて並べ替えて[[1,20],[3,14],[2,11],...]
、最終的order_array
に必要な を取得します[1,3,2,...]
。
@posts
新しいに基づいて元の配列を並べ替える最良の方法は何order_array
[1,3,2,...]
ですか? @posts
情報はすでに配列に含まれているため、可能であればデータベースに再度触れたくありません。
これを行う簡単な方法はありますか?