我正在使用Roo
解析我的 CSV 文件以进行导入。一切正常,但有时最终用户会更改 excel 文件的列标题。例如,如果 db 列是first_name
用户可能会将 excel 文件中的标题更改为firstname
. 在这种情况下,很容易使用alias_attribute
方法将标题映射到正确的数据库列名。
但是,如何处理excel中的列标题很长的情况?例如,类似the user's first name and last name
的alias_attribute
方法不能在这里使用:
alias_attribute :first_name, :the user's first name and last name
您将如何解析 csv 文件中的详细或长列标题以映射到正常的 db 列名?
这是我的实现roo
:
def load_imported_users
spreadsheet = open_spreadsheet
header = spreadsheet.row(2)
(3..spreadsheet.last_row).map do |i|
row = Hash[[header, spreadsheet.row(i)].transpose]
user = User.find_by_national_id(row["national_id"]) || User.new
user.attributes = row.to_hash
user
end
end
任何帮助,将不胜感激。