[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を返す点が異なります。