Ein Instrument, das ich verwende, gibt eine CSV-Datei mit Daten aus, aber ich kann die Spaltennamen nicht steuern. Ich mag die Kopfzeile ändern, bevor die Daten zu importieren (ohne die rohe CSV-Datei zu bearbeiten), so dass ich den folgenden Code verwenden kann, in meine Datenbank zu importieren:Rails 4 + CSV: csv-Header ändern
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
Foo.create! row.to_hash
end
end
Wie kann ich die Kopfzeile vollständig ersetzen mit einem meiner eigenen?
Ein Problem, andere Header außer 'convert' werden leer –
Versuchen Sie etwas wie' convert [Name] || "Platzhalter" 'im Lambda. Dies wird die Bezeichnung auf "Platzhalter" setzen, wenn sie nicht im Nachschlage-Hash enthalten ist. – ollpu
Ich benutze 'new', das könnte dieses Problem verursachen, da ich nur die angegebene ändern möchte und alle anderen gleich bleiben sollten ' CSV.new (body, headers: true, header_converters: Lambda {| name | convert [ name] .to_sym}, Konverter:: all) ' –