class ActiveStorage::Attached::Changes::CreateOne

def upload

def upload
  case attachable
  when ActionDispatch::Http::UploadedFile
    blob.upload_without_unfurling(attachable.open)
  when Rack::Test::UploadedFile
    blob.upload_without_unfurling(
      attachable.respond_to?(:open) ? attachable.open : attachable
    )
  when Hash
    blob.upload_without_unfurling(attachable.fetch(:io))
  when File
    blob.upload_without_unfurling(attachable)
  when Pathname
    blob.upload_without_unfurling(attachable.open)
  when ActiveStorage::Blob
  when String
  else
    raise(
      ArgumentError,
      "Could not upload: expected attachable, " \
        "got #{attachable.inspect}"
    )
  end
end