0

我正在使用Roo解析我的 CSV 文件以进行导入。一切正常,但有时最终用户会更改 excel 文件的列标题。例如,如果 db 列是first_name用户可能会将 excel 文件中的标题更改为firstname. 在这种情况下,很容易使用alias_attribute方法将标题映射到正确的数据库列名。

但是,如何处理excel中的列标题很长的情况?例如,类似the user's first name and last namealias_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

任何帮助,将不胜感激。

4

0 回答 0