我使用的仪器输出数据的CSV文件,但是我无法控制列名。我想在导入数据之前更改标题行(无需编辑原始CSV文件),以便可以使用以下代码将其导入数据库:
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
Foo.create! row.to_hash
end
end
Run Code Online (Sandbox Code Playgroud)
如何用自己的一个完全替换标题行?
您可以将:header_converters选项与使用查找表的lambda一起使用。
convert = {"from" => "to", "bad" => "good"}
CSV.foreach(file.path, headers: true, header_converters: lambda { |name| convert[name] }) do |row|
...
Run Code Online (Sandbox Code Playgroud)
如果要对名称进行的转换更简单,则只需在lambda中对名称进行更改即可。
如果要完全重命名标题,可以使用Ivan的答案中的方法。
| 归档时间: |
|
| 查看次数: |
1497 次 |
| 最近记录: |