James Gray
11/6/2008 9:50:00 PM
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