2013-10-25 11 views
6

Attualmente sto esportando un file CSV dalla mia app di rotaie e sta funzionando bene ma vorrei aggiungere un po 'più di dati al csv.come aggiungere una colonna personalizzata a CSV durante la generazione nei binari

Attualmente sto usando:

CSV.generate do |csv| 
    csv << column_names 
    all.each do |item| 
    csv << item.attributes.values_at(*column_names) 
    end 
end 

Per generare un file CSV con tutti i dati del modello di destinazione, ma vorrei aggiungere una colonna aggiuntiva, manufacturer_name che sarà preso da un modello genitore .. qualcosa di simile:

CSV.generate do |csv| 
    csv << column_names, 
    csv << "manufacturer_name" 
    all.each do |item| 
    csv << item.attributes.values_at(*column_names), 
    csv << Manufacturer.find(item.manufacturer_id).first().name 
    end 
end 

Come potrei scrivere questo correttamente in modo che il "manufacturer_name" Preparati ad una nuova colonna e il nome del produttore di ciascun elemento viene tirato dentro e messo nella colonna corretta?

+0

Se la risposta proposta risolve il problema, si prega di accettarlo come risposta. – Tass

risposta

6
CSV.generate do |csv| 
    names = column_names << 'manufacturer_name' 
    csv << names 
    all.each do |item| 
    row = item.attributes.values_at(*column_names) 
    row << Manufacturer.find(item.manufacturer_id).first.name 
    csv << row 
    end 
end 
+0

Puoi spiegare perché il campo al di sotto del produttore sarebbe vuoto, ma poi lo spazio accanto ad esso ha il testo inserito? Ecco il mio esempio con "map_title" http://cl.ly/image/1T170P0C2Y1X – ItsJoeTurner

+0

@ItsJoeTurner, la tua domanda va oltre lo scopo di questo. Ti consiglio di cercare la libreria CSV stessa (http://ruby-doc.org/stdlib-2.0.0/libdoc/csv/rdoc/CSV.html) o di porre la tua domanda separatamente da questa domanda. – Tass

Problemi correlati