我想上传一个CSV文件导入到现有的数据库,并接受下列未知属性错误上传
error: ActiveRecord::RecordInvalid in UploadsController#import! Validation failed: Email has already been taken.
控制器:
class UploadsController < ApplicationController
def index
@uploads = Upload.all
end
def import
Upload.import(params[:file])
redirect_to uploads_path, notice: "Employee data imported!"
end
end
型号:
class Upload < ActiveRecord::Base
require 'csv'
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
Employee.create! row.to_hash
end
end
end
表:
create_table "employees", force: :cascade do |t|
t.string "last_name"
t.string "first_name"
t.string "employee_code"
t.string "email"
t.string "level"
t.string "dept"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
我检查,并为员工我的数据库头不符合我的CSV文件(开始第1行,第1栏)的第一行。有什么想法吗?
您可以添加迁移以将新属性'last_name'添加到employees表中。 – akbarbin
同时仔细检查您正在运行上载的数据库是否是您手动检查列的相同数据库....即,如果您最近将该列添加到了开发中,并且它尚未投入生产,等等。 –
感谢@MuhamadAkbarBinWidayat。见下文。我把'last_name'作为我的表中的一列。除非我错过了一些不知道该怎么做的事情。 – jarlyon