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 methodarchivo 'para FileUploader: Class`

Respuestas a la pregunta(3)

Su respuesta a la pregunta