ActiveStorageの画像がそのまま代入できなかった
def duplicate
@product = Product.find_by(id: params[:id])
@product.product_options
@duplicated_product = @product.deep_dup
@duplicated_product.product_options = @product.product_options
@duplicated_product.image = @product.image
@duplicated_product.save!
end
以下のように怒られた
Could not find or build blob: expected attachable, got #<ActiveStorage::Attached::...
解決策
いったんopenでダウンロードしてから、URLで再度attachしたらいけた
def duplicate
@product = Product.find_by(id: params[:id])
@product.product_options
@duplicated_product = @product.deep_dup
@duplicated_product.product_options = @product.product_options
downloaded_image = open(@product.image.service_url)
@duplicated_product.image.attach(io: downloaded_image , filename: "foo.jpg")
@duplicated_product.save!
end
🤔より良い方法があったらしりたいです。。。