我有五個類別,每個類別有五個職位。例如。如何交錯多個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',只需使用'Array [max_len]'而不是'[nil] * max_len'。 –
'Array [max_len]'的東西可能更符合語義,但我認爲它的'Array.new(max_len)'或'Array.new(max_len,nil)'。乘法技巧很好,因爲在製作新的陣列時(從舊的陣列,或者不需要使用平坦的花式形狀),它可能會更簡單一些。 – user2251284
'max_by'技巧也不錯,但它必須是'foo.max_by(&:length).length'我認爲,因爲max只是返回元素。 – user2251284