所以我试图组合4个不同项目的数组,然后按照最新的第一个按“created_at”列对这些数组进行排序。因此,生成的数组应该是所有这些项目的数组,这样无论它们是什么类型,最新的项目都是第一个。我可以对它进行排序以便最新的项目,但它会对每种类型的项目进行排序,然后开始对其他类型进行排序。
示例:类型是衬衫和裤子。我在晚上10点上传一件衬衫,然后在晚上10:15上传一件裤子,然后在晚上10:30又上一件衬衫。阵列应该像(衬衫(10:30),裤子(10:15),衬衫(10:00))而是我得到(衬衫(10:00),衬衫(10:30),裤子(10) :15))
这是我的代码:
@tops = Top.first(15)
@bottoms = Bottom.first(15)
@footwears = Footwear.first(15)
@accs = Accessory.first(15)
@tempItems = []
@temp = []
@temp = @tempItems + @tops
@temp = @temp + @bottoms
@temp = @temp + @footwears
@temp = @temp + @accs
@temp.sort_by{ |temp| - temp.created_at.to_i}
@itemss = @temp.first(15)
答案 0 :(得分:2)
您需要将已排序的数组分配回@temp
...
@temp = @temp.sort_by{ |temp| - temp.created_at.to_i}
答案 1 :(得分:0)
您可以通过删除不必要的分配代码来减少混淆:
fifteen= [Top, Bottom, FootWear, Accessory].
flat_map{ |c| c.first(15) }.
sort_by{ |e| -e.created_at.to_i }.
first(15)