Ruby 1.9 で CSV::Table に行を追加しようとしています (質問は Ruby 1.8 の FasterCSV にも適用されます)。新しい行の列の順序がテーブルと異なる場合、ヘッダーが正しく指定されていても、要素が間違った列に追加されます。新しい行のヘッダーが無視されているように見えます。
require 'csv'
first_row = CSV::Row.new(["h1","h2","h3"],[1,2,3])
second_row = CSV::Row.new(["h2","h1","h3"],[2,1,3]) # note the change in order
table = CSV::Table.new([first_row])
table << second_row
puts table.to_s
出力:
h1,h2,h3
1,2,3
2,1,3
ただし、ヘッダーを明示的に指定しているため、CSV が新しい行のヘッダーをテーブルのヘッダーと一致させ、次の出力を生成することが期待されます。
h1,h2,h3
1,2,3
1,2,3
説明はありますか?新しい行を作成する前に自分で列を並べ替える以外に何かできることはありますか?