导入CSV文件无法填充单元格

时间:2016-02-04 03:57:09

标签: ruby-on-rails ruby csv

我正在尝试导入csv文件。我有文件加载,但无法获取文件将单元格数据加载到模型中。

这是我的导入方法模型。它应该为每一行创建一个实例,并使用每行的属性填充该实例。我看到它导入了fie但没有填写每行的任何数据。

class Report < ActiveRecord::Base        
attr_accessor :contract,:start_time, :end_time, :source, :price
require 'csv'

def self.import(file)
  CSV.foreach(file.path, headers: true) do |row|
    report_hash = row.to_hash # exclude the price field
    report = Report.where(id: report_hash["id"])

    if report.count == 1
      report.first.update_attributes(report_hash)
    else
      Report.create!(report_hash)
    end 
  end 
end 

这是一些细胞内容

contract,start_time,end_time,source,price
Corn,11-03-2014,11-16-2014,cme, 3.82

当我加载文件时,我得到了这个......

#<Report id: 380, created_at: "2016-02-04 03:41:50", updated_at: "2016-02-04 03:41:50", contract: nil, source: nil, price: nil, start_time: nil, end_time: nil>

除了created_at和updated_at之外,一切都是零,我做错了什么?

1 个答案:

答案 0 :(得分:2)

你的问题在

    attr_accessor :contract,:start_time, :end_time, :source, :price

我认为这会干扰ActiveRecord产生的魔力,在我看来attr_accessor会覆盖AR,并且无法设置任何字段。

删除此行,您的代码就可以使用了!