0

そのため、異なるアイテムの 4 つの配列を結合し、それらの配列を列「created_at」で並べ替えようとしています。したがって、結果の配列は、それらのタイプに関係なく最新のアイテムが最初になるようにソートされたすべてのアイテムの配列になるはずです。最新のアイテムになるように並べ替えることができますが、各タイプのアイテムを並べ替えてから、他のタイプの並べ替えを開始します。

例:タイプはシャツとパンツです。午後 10 時にシャツをアップロードし、午後 10 時 15 分にパンツをアップロードし、午後 10 時 30 分にシャツをアップロードします。配列は (shirt(10:30), pant(10:15), shirt(10:00)) のようになるはずですが、代わりに (shirt(10:00), shirt(10:30), pant(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)
4

2 に答える 2

2

ソートされた配列を再度割り当てる必要があります@temp

...

@temp =  @temp.sort_by{ |temp| - temp.created_at.to_i}
于 2013-09-27T11:35:22.690 に答える
0

不要な割り当てコードを取り除くことで、混乱を減らすことができます。

fifteen= [Top, Bottom, FootWear, Accessory].
  flat_map{ |c| c.first(15) }.
  sort_by{ |e| -e.created_at.to_i }.
  first(15)
于 2013-09-27T11:49:42.233 に答える