Al importar un CSV, ¿cómo manejo los datos en una fila que corresponde a una asociación?

Estoy siguiendo elImportar CSV Railscast Y es sencillo.

El problema es que trata solo con un archivo csv que contiene solo información en 1 modelo en 1 archivo.

Por ejemplo, tengo un archivo CSV que estoy tratando de importar a miListing modelo. En cada fila / listado tiene una columna llamadaBuilding donde el valor es en realidad el nombre del atributo de construcción de esa lista (es decir,@listing.building.name).

¿Cómo manejo esos casos en la importación?

Este es el armario que Ryan pone en ese Railscast, que está en elProduct modelo en su caso:

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

Todo lo que está sucediendo es que él está comprobando si el producto existe y si lo hace, entonces actualiza los atributos. Si no lo hace, entonces crea uno nuevo.

No estoy seguro de cómo manejar las asociaciones en este caso ... especialmente dado que lo que debe suceder es en el caso de que no exista un registro asociado, debe crearse durante este proceso.

Así que volviendo a mibuilding.name ejemplo anterior, si no hayBuilding.find_by_name(name), entonces debería crear un nuevo registro de construcción.

¿Pensamientos?