【发布时间】:2020-09-01 12:30:50
【问题描述】:
我有以下哈希
=> {"email"=>["old@email.com", "new@email.com"],
"name"=>["some name", "stupid name"],
"updated_at"=>[Fri, 28 Aug 2020 15:01:53 UTC +00:00, Mon, 31 Aug 2020 20:18:26 UTC +00:00]}
每个键的第一个值,例如["email"][0] 是 old_data 和每个键的第二个值,例如["name"][1] 是 new_data
根据上面的数据,我想创建一个带有旧数据和新数据标题以及所需结构的 CSV 文件:
Old Data New Data
{ email: old@email.com } { email: new@email.com}
{ name: “some name” } { name: "no name" }
我尝试使用以下代码:
LOG_HEADERS = ['Old Data', 'New Data'].freeze
CSV.generate(col_sep: ';', headers: LOG_HEADERS, encoding: 'UTF-8') do |csv|
hash.each do |v|
old_data_value = v.map { |k, v| k + ": #{v[0]}" }
new_data_value = v.map { |k, v| k + ": #{v[1]}" }
csv << [old_data_value,
new_data_value]
end
end
end
但是我得到了一个具有以下结构的数组:
Old Data New Data
["email: old@email.com", "name: some name"] ["email: new@email.com", "name: stupid name"]
如何将其更改为具有上述结构的哈希?
【问题讨论】:
标签: ruby-on-rails ruby