From: James Gray Date: 2008-11-07T06:49:41+09:00 Subject: Re: FasterCVS Question/Problem On Nov 6, 2008, at 3:31 PM, Eric Marthinsen wrote: > Hello- Howdy. > I'm using FasterCSV to export order records for our fulfillment > partner. > Here's a boiled-down snippet of my code: > > FasterCSV.open(filename, "w", :encoding => 'N') do |csv| > orders.each do |order| > order.items.each do |item| > csv << [ > item.sku.sku, This line seems fishy. You call sku() twice here. > > item.quantity, > order.customer.first_name, > order.customer.last_name > ] > end > end > end > > If I had one order with two items, I'd expect the output to look like > this: > > SKU001,1,John,Smith > SKU002,1,John,Smith > > However, the output actually looks like this: > > "SKU001,SKU002",1,John,Smith > > It seems to be taking the common information and collapsing it onto a > single row. Does anyone know how to get the output to resemble what I > was expecting? I expect the output to be what you so as well. I ran this code as saw the output we both expected: #!/usr/bin/env ruby -wKU require "rubygems" require "faster_csv" Customer = Struct.new(:first_name, :last_name) Order = Struct.new(:customer, :items) Item = Struct.new(:sku, :quantity) customer = Customer.new("John", "Smith") orders = [Order.new(customer, %w[SKU001 SKU002].map { |s| Item.new(s, 1) })] FasterCSV.open("example.csv", "w", :encoding => "N") do |csv| orders.each do |order| order.items.each do |item| csv << [ item.sku, item.quantity, order.customer.first_name, order.customer.last_name ] end end end __END__ Does that help? James Edward Gray II