Я пытаюсь добавить строку в CSV::Table в Ruby 1.9 (вопросы также относятся к FasterCSV в Ruby 1.8). Если порядок столбцов в новой строке отличается от порядка в таблице, элементы добавляются не в те столбцы, даже если заголовки указаны правильно. Похоже, что заголовки в новой строке игнорируются.
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
Любые объяснения? Могу ли я что-то с этим сделать, кроме как самостоятельно изменить порядок столбцов перед созданием новой строки?