我想上傳一個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