我尝试将CSV数据导入已存在的Rails表。
我的CSV包含lec_exam,location,meeting_days,begin_time和end_time列。我的表格如下:
create_table "courses", force: true do |t|
t.string "lec_exam"
t.string "location"
t.string "meeting_days"
t.time "begin_time"
t.time "end_time"
t.datetime "created_at"
t.datetime "updated_at"
t.string "status"
end
根据当前时间与当时发生的课程的存在,我想要更新状态(即采取与开放)字段。
每次导入CSV数据时,最后一列(end_time)都没有正确导入,因为每个课程的end_time都是nil,只需简单地看一眼CSV就可以了。
我试过了
CSV.foreach(file.path, headers: true) do |row|
#course_hash = row.to_hash # exclude the price field
#course = Course.where(id: course_hash["id"])
row = Course.create!({
:lec_exam => row[0],
:location => row[1],
:meeting_days => row[2],
:begin_time => row[3],
:end_time => row[4]
})
以及to_hash方法。对解决方案的任何帮助都会很棒。谢谢!
答案 0 :(得分:0)
要将CSV数据导入现有的Rails表,请添加:
require 'csv'
csv_text = File.read('...')
csv = CSV.parse(csv_text, :headers => true)
csv.each do |row|
Moulding.create!(row.to_hash)
end

在rake任务中,或在控制器操作中。
来源:Ruby on Rails - Import Data from a CSV file
希望这有帮助!
答案 1 :(得分:0)
解决。
模型有一个不必要的
attr_accessor:
标签。的Bleh。