我有一个ruby导入到DB进程,它根据名为headers的数组检查标题。就目前而言,这些标题必须与它们在数组中出现的标题完全相同。无论是大写还是小写,我都希望他们被接受。
CSV.foreach(FILE, encoding:'iso-8859-1:utf-8', headers: true, skip_blanks: true) do |row|
# check the header row, make sure all are acceptable
if count == 0
row.headers.each do |header|
if (!headers.include? header) and !header.nil? and header != ""
log.error "#{header} is not a valid header"
exit
end
end
end
目前接受:“Ast_A” 但是不接受:“ast_a” 我试过Convert hash keys to lowercase -- Ruby Beginner的代码无济于事。我的问题是如何在导入期间使.csv导入标题行不区分大小写?
答案 0 :(得分:6)
您只需提供一个响应header_converter
方法的call
对象,并接收header
字符串作为参数:
converter = lambda { |header| header.downcase }
CSV.foreach([...], headers: true, header_converters: converter, [...]) do |row|
所以现在所有已解析的CSV标题都是低级的。您只需将其与本地变量headers