[Ruby] CSV の header を書き換えたい

CSV::HeaderConverters を利用します。

具体的なコードとして、以下を参考にさせて頂きました。

CSV.foreach(
  file.path,
  headers: true,
  header_converters: ->(h) { h.try(:downcase).try(:gsub, '-', '_') },
  encoding: 'Shift_JIS:UTF-8'
) do |row|
    :
    処理
    :
end

Lambda(無名関数)を利用して、#gsub で置き換える。

Rails の method #try も利用する。

nilでない場合にのみオブジェクトのメソッドを呼び出したい場合、最も単純な方法は条件文を追加することですが、どこか冗長になってしまいます。そこでtryメソッドを使うという手があります。tryはObject#sendと似ていますが、nilに送信された場合にはnilを返す点が異なります。

Active Support コア拡張機能 | Rails ガイド