2013-10-25 1 views
6

Ich exportiere derzeit eine CSV-Datei aus meiner Rails App und es funktioniert gut, aber ich möchte ein bisschen mehr Daten zum CSV hinzufügen.wie benutzerdefinierte Spalte zu CSV während der Generierung in Schienen hinzugefügt werden

Derzeit verwende ich bin:

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

in eine CSV mit allen Daten aus dem Zielmodell erzeugen möchte aber eine zusätzliche Spalte hinzufügen, MANUFACTURER_NAME, die von einem übergeordneten Modell genommen werden .. etwas wie:

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 

Wie würde ich dies richtig zu schreiben, so dass die „MANUFACTURER_NAME“ auf einen neuen Spaltenkopf fertig und der Herstellername der einzelnen Elemente wird eingezogen und in der richtigen Spalte setzen?

+0

Wenn die vorgeschlagene Antwort Ihr Problem löst, akzeptieren Sie es bitte als Antwort. – Tass

Antwort

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

Können Sie erklären, warum das Feld unter Manufacturer leer ist, aber das Feld daneben den Text enthält? Hier ist mein Beispiel mit "map_title" http://cl.ly/image/1T170P0C2Y1X – ItsJoeTurner

+0

@ItsJoeTurner, Ihre Frage geht über den Rahmen dieses hier hinaus. Ich empfehle, die CSV-Bibliothek selbst zu untersuchen (http://ruby-doc.org/stdlib-2.0.0/libdoc/csv/rdoc/CSV.html) oder Ihre Frage getrennt von dieser Frage zu stellen. – Tass

Verwandte Themen