Enumerable#flat_mapは各要素をブロックに渡し、その返り値を連結した配列を返すメソッドです。
通常のmapなら
['ab','cd','ef'].map(&:chars) #=> [["a", "b"], ["c", "d"], ["e", "f"]]
となるところを、
['ab','cd','ef'].flat_map(&:chars) #=> ["a", "b", "c", "d", "e", "f"]
と平らにできます。
…まぁ、この程度ならflatten最初から使えばいいんじゃないかという疑惑も聞こえてきますが
妙に入り組んだ配列群の全ての文字を引っ張り出すのもこの通り
[["ab","cd"],["ef"],["gh","ij","k"]].flatten.flat_map(&:chars) #=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"]
見た目が美しく無いですが、内部でEnumerableを呼び出す事もできます
[["ab","cd"],["ef"],["gh","ij","k"]].flat_map{|i| i.map{|j| j.chars}.flatten} #=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"]