Al verlo de nuevo, creo que la solución es al revés: la tarea uploads:migrate_to_s3 debería tener la condición if !FileHelper.is_supported_media?(name). No tiene sentido añadir el encabezado content-disposition: attachment; filename=X a los videos y al audio. ¿No estás transmitiendo esos archivos desde dentro de una publicación de Discourse en lugar de descargarlos?
Por lo tanto, lo que deberíamos tener es:
Sin encabezado content-disposition attachment
- Imágenes
- Videos
- Audio
Sí, encabezado content-disposition attachment con el nombre de archivo original
- Todos los demás adjuntos/subidas (PDF, TXT, CSV, etc.)
Si no estoy viendo algo, siéntete libre de añadir más información o ejemplos.