我正在尝试导入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之外,一切都是零,我做错了什么?
答案 0 :(得分:2)
你的问题在
行 attr_accessor :contract,:start_time, :end_time, :source, :price
我认为这会干扰ActiveRecord产生的魔力,在我看来attr_accessor
会覆盖AR,并且无法设置任何字段。
删除此行,您的代码就可以使用了!