我使用此代码将我的CSV文件导入表格:
def Hotel.import(file)
allowed_attributes = ["id", "name", "area", "short_name", "zip", "address", "tel", "fax", "staff_name", "information", "created_at", "updated_at"]
CSV.foreach(file.path, headers: true) do |row|
product = find_by_id(row["id"]) || new
product.attributes = row.to_hash.select{ |k,v| allowed_attributes.include? k }
product.save!
end
end
def import
Hotel.import(params[:file])
redirect_to root_url, notice: "Product Imported."
end
但是,此代码仅向表中插入id,created_at和updated_at字段。 insert命令显示在这里:
INSERT INTO `hotels` (`created_at`, `updated_at`) VALUES ('2014-04-10 07:50:23', '2014-04-10 07:50:23')
我正在使用rails 4.0和ruby 2.0来完成这个项目。我仔细检查发现错误,但我在这里找不到任何问题,所以请告诉我哪里出错了?
答案 0 :(得分:0)
我发现问题是:当我将文件导出到桌面时,我选择通过LibreOffice Calc(Ubuntu 13.10)打开它,因此格式错误。我通过gedit文本编辑器打开更改,它工作正常。非常愚蠢的错误!