Ruby-on-Rails Rake导入意外的tASSOC

时间:2013-09-10 16:00:27

标签: ruby-on-rails csv rake

我正在尝试使用以下代码从csv加载数据作为rake任务:

require 'csv'

desc "Import Users from csv file"
task :import_users => [:environment] do

file = "db/users.csv"

CSV.foreach(file, :headers => true) do |row|
User.create {
  :name => row[1],
  :email => row[2],
  :password => row[3],
  :password_confirmation => row[4],
  :admin => row[5]
}
end

end

和CSV:

name,email,password,password_confirmation,admin
john smith,js@mail.com,password,password,TRUE

我为每个属性收到意外的tASSOC错误。

1 个答案:

答案 0 :(得分:0)

如果你在创建方法的哈希周围放置括号,它将正常工作:

User.create({
  :name => row[1],
  :email => row[2],
  :password => row[3],
  :password_confirmation => row[4],
  :admin => row[5]
})

基本上ruby不明白这是一个以hash作为参数的方法调用。通过将括号放在那里,你可以明确指出这就是你的意思。