我想以CSV格式导出一些ActiveRecords。在检查了一些教程后,我发现了这个:
def export_as_csv(equipments)
attributes = %w[id title description category_id]
CSV.generate(headers: true) do |csv|
csv << attributes
equipments.each do |equipment|
csv << equipment.attributes.values_at(*attributes)
end
return csv
end
end
问题是,我想在我的测试中操作内存中的所有内容(即我不想将文件保存在磁盘中)。那么,当我收到这个csv对象作为返回值时,我如何遍历行和列?我来自Python,所以我尝试了:
csv = exporter.export_as_csv(equipments)
for row in csv:
foo(row)
但是显然没有用。此外,设备肯定不是零。
答案 0 :(得分:0)
CSV.generate
返回根据csv规则格式化的字符串。
所以最明显的方法是解析它并迭代,如:
csv = exporter.expor_as_csv(equipments)
CSV.parse(csv).each do |line|
# line => ['a', 'b', 'c']
end
答案 1 :(得分:0)
在一些视频之后,我发现return
是问题所在。返回CSV我收到的是CSV对象,而不是CSV本身。