我正在尝试将csv中的数据上传到我的数据库中,并且一直说unknown attribute 'day' for MidSemesterTable.
,而表中存在“ day”列。
MidSemesterTable架构表示
create_table "mid_semester_tables", force: :cascade do |t|
t.string "day", default: "", null: false
t.string "building", default: "", null: false
t.string "s1", default: "", null: false
t.string "s2", default: "", null: false
t.string "s3", default: "", null: false
t.string "s4", default: "", null: false
t.string "s5", default: "", null: false
t.string "s6", default: "", null: false
t.string "s7", default: "", null: false
t.string "s8", default: "", null: false
t.string "s9", default: "", null: false
t.string "s10", default: "", null: false
t.string "s11", default: "", null: false
end
控制器
def def new
@csv = MidSemesterTable.new
@table = MidSemesterTable.all
end
def import
MidSemesterTable.import(params[:file])
redirect_to new_mid_semester_table_path
end
模型
def self.import(file)
CSV.foreach(file.path, headers: true) do |r|
print r.to_h
MidSemesterTable.create! r.to_h
end
end
正在上传CSV
day,building,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11
MONDAY,CHAPEL,TMC144,EDS411,GST211,GST211,CST111,CST111,,,CIT111,CIT111,
从答案here和here来看,他们正在谈论命名问题并确保标头和数据库行名一致。在我的情况下,他们会怎么做。
请我错过了什么?
答案 0 :(得分:0)
如果将来有用户,我会发布此答案。
如果像我一样,您使用excel编辑CSV。确保编码设置为UTF-8
,而不是其他任何设置。要特别小心,因为有一个名为UTF-8 with BOM
的编码。注意不要忽略“ with BOM”。如果不这样做,则标题会出现问题,并将CSV保存到数据库中。