Когда я импортирую CSV, как мне обрабатывать данные в строке, которая соответствует ассоциации?
Я следую заИмпорт CSV Railscast и это прямо вперед.
Проблема в том, что он имеет дело только с CSV-файлом, содержащим только информацию в 1 модели в 1 файле.
Скажем, у меня есть файл CSV, который я пытаюсь импортировать в свойListing
модель. В каждой строке / списке есть столбец с именемBuilding
где значение фактически является именем атрибута здания этого списка (т.е.@listing.building.name
).
Как мне справиться с этими случаями при импорте?
Это шкаф, который Райан получает в этом Railscast, который находится наProduct
Модель в его случае:
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
Все, что происходит, это то, что он проверяет, существует ли продукт и обновляет ли атрибуты. Если это не так, то создайте новый.
Не совсем уверен, как обрабатывать ассоциации в этом случае ... особенно учитывая, что то, что должно произойти, это в том случае, если связанная запись не существует, ее необходимо создать во время этого процесса.
Итак, возвращаясь к моемуbuilding.name
пример раньше, если нетBuilding.find_by_name(name)
, то он должен создать новую запись здания.
Мысли?