Wie gehe ich beim Importieren einer CSV mit Daten in einer Zeile um, die einer Zuordnung entsprechen?

Ich folge derImportieren Sie CSV Railscast und es ist einfach.

Das Problem ist, dass es sich nur um eine CSV-Datei handelt, die nur Informationen in 1 Modell in 1 Datei enthält.

Angenommen, ich habe eine CSV-Datei, die ich in meine importieren möchteListing Modell. In jeder Zeile / Auflistung befindet sich eine Spalte mit dem NamenBuilding wobei der Wert tatsächlich der Name des Gebäudeattributs dieser Auflistung ist (d. h.@listing.building.name).

Wie gehe ich beim Import mit diesen Fällen um?

Dies ist der Schrank, den Ryan in dem Railscast bekommt, der sich auf der Website befindetProduct Modell in seinem Fall:

def self.import(file)
  CSV.foreach(file.path, headers: true) do |row|
    product = find_by_id(row["id"]) || new
    product.attributes = row.to_hash.slice(*accessible_attributes)
    product.save!
  end
end

Alles, was passiert, ist, dass er prüft, ob das Produkt vorhanden ist, und dann die Attribute aktualisiert. Wenn dies nicht der Fall ist, erstellen Sie eine neue.

Wir sind uns nicht ganz sicher, wie wir in diesem Fall mit den Zuordnungen umgehen sollen. Insbesondere, wenn ein zugeordneter Datensatz nicht vorhanden ist, muss er während dieses Vorgangs erstellt werden.

Also zurück zu meinembuilding.name Beispiel früher, wenn es keine gibtBuilding.find_by_name(name), dann sollte ein neuer Baubericht erstellt werden.

Gedanken?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage