Загрузка нескольких вложений изображений из Amazon S3 в Rails

Я пытаюсь добавить к модели несколько прикрепленных изображений. Я использовал эту ссылку, но я все еще как бы застрял, так как то, что я пытаюсь сделать, отличается немного с тех пор:

  1. Я пытаюсь прикрепить несколько изображений к каждому объекту (который я засеваю) в модели.
  2. Я хочу получить эти изображения из своего ведра S3 и прикрепить их к объектам (возможно ли это?)

Вот мой seed.rb:

shirt = Item.create(name:"Basic Shirt",price:19.99)
skirt = Item.create(name:"Basic Skirt",price:29.99)
sweater = Item.create(name:"Basic Sweater",price:39.99)
kid_hood = Item.create(name:"Basic Kid Hoodie",price:19.99)

# somehow attach images here?

Я использую гем aws-sdk-s3, чтобы подключить Active Storage к моей корзине S3. Подскажите пожалуйста, нужны ли какие-то дополнительные файлы для просмотра. Я с радостью отредактирую этот пост, чтобы включить его.


person perrywinkle    schedule 18.05.2021    source источник


Ответы (1)


ActiveStorage работает с потоками простых байтов, поэтому вы можете загрузить файл (например, используя open-uri) и назначить поток как содержимое вложения.

Предполагая, что у вас есть следующее (адаптируйте, если отличается)

class Item < ApplicationRecord
  has_one_attached :photo
end

вы можете получить свои семена как:

require 'open-uri'

shirt = Item.create(name:"Basic Shirt",price:19.99)
shirt.photo.attach(io: open('your-s3-nonexpiring-url'), filename: 'foo.bar')

# ...

person rewritten    schedule 18.05.2021