我有一个现有的 activerecord 数组,通过以下方式获得:
@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
数组中。
有没有一种简单的方法可以做到这一点?