私はそれぞれ約5つの投稿で5つのカテゴリを持っています。例えば。複数のActiveRecord関連付けクエリをインターリーブする方法は?
=> category_a.posts
=> #<Post id:01>, #<Post id:02>, #<Post id:03> etc
=> category_b.posts
=> #<Post id:10>, #<Post id:11>, #<Post id:12> etc
=> category_c.posts
=> #<Post id:20>, #<Post id:21>, #<Post id:22> etc
私は、彼らがインターリーブされている子どもたちのコレクション(できるだけ均等にし)たいと思い、すなわち
#<Post id:01>, #<Post id:10>, #<Post id:20>, #<Post id:02>, #<Post id:11> etc
どのように私はこれを達成するだろうか?
私の解決策の次の進化は、すべての配列を 'nil'で与えられた長さに塗りつぶして並べ替えを保存して順序を保持することですが、これはより良い方法です。小さな提案: 'max_len' =' args.max_by&:length'そして '[nil] * max_len'の代わりに' Array [max_len] 'を使うだけです。 –
'Array [max_len]'はもっと意味的には正解でしょうが、 'Array.new(max_len)'や 'Array.new(max_len、nil)'と思っています。乗算のトリックは、新しい配列(古いものから、または平坦なものを使わなくても派手な形状から)を作るときには、もっと簡単/一般的かもしれないので、いいです。 – user2251284
'max_by'トリックもいいですが、' foo.max_by(&:length).length'でなければなりません。 – user2251284