将.csv文件保存到数据库无法识别to_hash方法

时间:2012-10-06 04:13:07

标签: ruby-on-rails ruby csv ruby-on-rails-2

根据此example,以下方法:

require "csv"

def import_vault_data(filename)    
    fn = "#{RAILS_ROOT}/public/data/#{filename}"
    CSV.foreach(fn, :headers => true) do |row|
        House.create!(row.to_hash)    
    end
end

正在产生此错误:

undefined method `to_hash' for #<Array:0x104cc07b8>

关于缺少什么的任何线索?

我正在使用rails 2.3.9

3 个答案:

答案 0 :(得分:5)

答案可能有点迟,但你需要:

CSV.foreach(file.path, headers: true) do |row|

因为除非你在哈希

中有标题,否则你不能调用to_hash

答案 1 :(得分:2)

尝试使用ruby 1.8.7

House.create!(row.hash)   

答案 2 :(得分:2)

你也可以

House.create!(Hash[row])