我在用ruby写入CSV文件时遇到问题,无法弄清。
> header = "Full Name, Email, Phone Number" csv_file =
> CSV.open("myfile.csv", "wb") do |csv|
> csv << header
> inactive_users_id.each do |inactive_id| #inactive_users_id is just an array on integers, which represent user id
> full_name = User.find(inactive_id).full_name
> email = User.find(inactive_id).email
> phone_num = User.find(inactive_id).phone_number
> desired_info = Array.new
> desired_info.push(full_name)
> desired_info.push(email)
> desired_info.push(phone_num)
> csv << desired_info
> end
> end
我确实收到以下错误:
可能是什么问题? 谢谢!
答案 0 :(得分:1)
虽然我无法复制您的问题,请尝试以下操作:
headers = ["Full Name", "Email", "Phone Number"]
CSV.open("myfile.csv", "wb", write_headers: true, headers: headers ) do |csv|
User.where(id: inactive_users_id)
.pluck(:full_name, :email, :phone_number)
.each do |row|
csv << row
end
end
在这里,我们将在1个查询中收集所有User
(而不是您当前每个User
的3个),而仅将所需的列转换为Array
(使用{{1 }})。然后,我们将每一个都连续地推入#pluck
正如在第3条滑轨中的注释中指出的那样,csv
不能用于多列(或完全取决于版本),而应该使用pluck
,然后将循环内的属性引用到创建行