Carga de archivos Carrierwave con diferentes tipos de archivos
Tengo lo siguiente como mi FileUploader:
class FileUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
version :thumb, if: :image? do
# For images, do stuff here
end
version :preview, if: :pdf? do
# For pdf, do stuff here
end
protected
def image?(new_file)
new_file.content_type.start_with? 'image'
end
def pdf?(new_file)
new_file.content_type.start_with? 'application'
end
end
Obtuve esto de la página de github de carrierwave. Funciona principalmente, pero ¿qué pasa si no quiero versiones diferentes? Básicamente solo quiero hacer ciertos procesos si es un pdf, o ciertos procesos si es una imagen. También puedo permitir otros tipos de archivos en el futuro, por lo que sería genial si pudiera tener una manera fácil de hacerlo también.
Por ejemplo, es posible que desee usar un imgoptim si es una imagen, y luego una biblioteca de optimización de pdf si es un pdf, etc.
Lo intenté:
if file.content_type = "application/pdf"
# Do pdf things
elsif file.content_type.start_with? 'image'
# Do image things
end
pero obtén el error:NameError: (undefined local variable or method
archivo 'para FileUploader: Class`