Импорт изображения ActiveStorage с удаленного URL-адреса с помощью гема activerecord-import - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь импортировать список товаров через CSV, есть столбец с изображением удаленного URL. Я использую gem activerecord import, когда я использую настройки ниже, я не получаю никаких ошибок или журналов, но изображения не создаются.

    require 'open-uri'
    file = open(row['image'])

    product = Product.new(
        name: row['name'],
        sku: row['sku'],
        brand_id: row['brand']
    )
    product.image.attach(io: file, filename: row['sku']+ '.jpg', content_type: 'image/jpg')
    products << product
end

importing = Product.import products, recursive: true

Я что-то упустил? Или есть лучший способ справиться с этим.

Мне удалось импортировать изображение с обычным анализом CSV. До сих пор не уверен, почему импорт activerecord не работает. Я думаю, что я спрошу это в Github драгоценного камня.

csv_text = resp.body
csv = CSV.parse(csv_text, :headers => true, :encoding => 'utf-8')
csv.each do |row|
    file = open(row['image'])
    t = Product.new
    t.name = row['name']
    t.image.attach(io: file, filename: row['name']+ '.jpg', content_type: 'image/jpg')
    t.save
    puts "#{t.name} saved"
end

1 Ответ

0 голосов
/ 07 января 2020

Предоставляя эти подсказки в качестве ответа, затем:

Часть кода, которой вы поделились (при условии, что другие части работают должным образом), выглядит нормально и, как будто она делает то, что должна, но поскольку ваши изображения не создаются. .. (удаленная часть догадок)

Edit : после вашего обновления, раскрывающего некоторый контекст, я предполагаю, что первая версия (с ActiveRecord import) не работала как гем импорта не вызывает обратные вызовы и / или, возможно, пропускает то, что требуется для ActiveStorage, чтобы инициировать загрузку вложения файла.

...