我已经编写了通过上传的CSV文件导入地址的代码,该文件有时包含领先0的邮政编码。
问题是前导0的邮政编码未正确导入。例如,使用邮政编码02420
导入的地址最终会保存到1296
的数据库中。不知道发生了什么事。不确定是否存在用于将02420
转换为1296
所有地址的所有其他邮政编码和方面都是正确导入的。
以下是应用设置:
我尝试了什么:
感谢您的帮助!
答案 0 :(得分:3)
好的,所以我明白了。在某个地方,它必须将02420(或任何其他带前导0的数字)转换为八进制数(感谢Melvin Kicchi)
原始代码:
CSV.foreach(file.path, headers: true, skip_blanks: true, converters: :all, encoding: 'windows-1251:utf-8') do |row|
修复转化的代码:
CSV.foreach(file.path, headers: true, skip_blanks: true, encoding: 'windows-1251:utf-8') do |row|
需要删除converters: :all
,因为解析器正在转换所有不同类型的数据,因此将02420作为整数传递,后来变为八进制数。
感谢您的帮助!如果我的理解是错误的,请纠正我。
您可以阅读有关Ruby's CSV Converters
的更多信息答案 1 :(得分:0)
试试这个
student.addresses.create(
line1: row["address_line1"],
line2: row["address_line2"],
line3: row["address_line3"],
city: row["address_city"],
state: row["address_state"],
postal: row["address_postal"].try(:to_s),
country: row["address_country"],
kind: row["address_address_kind"]
)