Ao importar um CSV, como manipulo dados em uma linha que corresponde a uma associação?

Estou seguindo oImportar Railscast CSV e é direto.

O problema é que ele lida apenas com um arquivo csv contendo apenas informações em 1 modelo em 1 arquivo.

Digamos que eu tenha um arquivo CSV que estou tentando importar para o meuListing modelo. Em cada linha / listagem, tem uma coluna chamadaBuilding onde o valor é, na verdade, o nome do atributo de construção dessa listagem (por exemplo,@listing.building.name).

Como faço para lidar com esses casos na importação?

Este é o armário que Ryan recebe no Railscast, que está noProduct modelo em seu 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

Tudo o que está acontecendo é que ele está verificando se o produto existe e atualiza os atributos. Se isso não acontecer, crie um novo.

Não tenho certeza como lidar com as associações neste caso ... especialmente considerando que o que precisa acontecer é no caso de um registro associado não existir, ele precisa ser criado durante este processo.

Então, voltando ao meubuilding.name exemplo anterior, se não houverBuilding.find_by_name(name), então deve criar um novo registro de construção.

Pensamentos?