0

我正在尝试使用以下代码从 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 错误。

4

1 回答 1

0

如果您在 create 方法中将括号括在散列周围,它将正常工作:

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

基本上 ruby​​ 不明白这是一个以哈希为参数的方法调用。通过将括号放在那里,您可以明确表明这就是您的意思。

于 2013-09-10T16:12:52.517 回答