将信息导入现有的表Rails

时间:2014-11-17 02:38:34

标签: ruby-on-rails csv

我尝试将CS​​V数据导入已存在的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方法。对解决方案的任何帮助都会很棒。谢谢!

2 个答案:

答案 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。