web-dev-qa-db-fra.com

Comment enregistrer une image à partir d'une URL avec Rails stockage actif?

Je cherche à enregistrer un fichier (dans ce cas, une image) situé sur un autre serveur Web http en utilisant Rails 5.2 stockage actif.

J'ai un objet avec un paramètre de chaîne pour l'URL source. Ensuite, sur un before_save, je veux saisir l'image distante et l'enregistrer.

Exemple: URL d'une image http://www.example.com/image.jpg .

require 'open-uri'

class User < ApplicationRecord
  has_one_attached :avatar
  before_save :grab_image

  def grab_image
    #this indicates what I want to do but doesn't work
    downloaded_image = open("http://www.example.com/image.jpg")
    self.avatar.attach(downloaded_image)
  end

end

Merci d'avance pour toute suggestion.

10
Ed_

Je viens de trouver la réponse à ma propre question. Mon premier instinct était assez proche ...

require 'open-uri'

class User < ApplicationRecord
  has_one_attached :avatar
  before_save :grab_image

  def grab_image
    downloaded_image = open("http://www.example.com/image.jpg")
    self.avatar.attach(io: downloaded_image  , filename: "foo.jpg")
  end

end
24
Ed_