Podczas importowania pliku CSV, jak mogę obsługiwać dane w wierszu, który odpowiada powiązaniu?

Idę zaImportuj kolejkę CSV i to jest proste.

Problem polega na tym, że zajmuje się tylko plikiem csv zawierającym tylko informacje w 1 modelu w 1 pliku.

Powiedzmy, że mam plik CSV, który próbuję zaimportować do mojegoListing Model. W każdym wierszu / liście znajduje się kolumna o nazwieBuilding gdzie wartość jest w rzeczywistości nazwą atrybutu budynku tego wpisu (tj.@listing.building.name).

Jak radzić sobie z tymi przypadkami w imporcie?

To jest szafa, którą Ryan dostaje w tej kolejce, która jest naProduct model w jego przypadku:

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

Wszystko, co się dzieje, polega na sprawdzaniu, czy produkt istnieje i czy następnie aktualizuje atrybuty. Jeśli nie, utwórz nowy.

Nie do końca pewny, jak radzić sobie ze skojarzeniami w tym przypadku ... zwłaszcza, że ​​to, co musi się wydarzyć, jest w przypadku, gdy powiązany rekord nie istnieje, musi zostać utworzony podczas tego procesu.

Wracając do mojegobuilding.name przykład wcześniej, jeśli nie maBuilding.find_by_name(name), to powinno stworzyć nowy rekord budynku.

Myśli?

questionAnswers(1)

yourAnswerToTheQuestion