Mostrar imágenes con carrierwave en rails 3.1 en una carpeta de tienda privada

Tengo una aplicación Rails 3.1 y estoy agregando carrierwave para almacenar imágenes. Pero quiero almacenar esas imágenes fuera de la carpeta pública, porque solo deberían ser accesibles cuando los usuarios estén cargados en la aplicación. Así que cambié store_dir en carrerwave con el archivo inicializador:

CarrierWave.configure do |config|
  config.root = Rails.root
end

Y mi cargador de onda portadora es así:

class ImageUploader < CarrierWave::Uploader::Base
...
def store_dir
  "imagenes_expedientes/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end

Las imágenes se almacenan correctamente y si uso la carpeta pública, todo funciona bien. Sin embargo, cuando intento mover cosas a la carpeta privada, las imágenes no se muestran y cuando trato de abrirlas en una nueva ventana aparece el siguiente error:

Routing Error

No route matches [GET] "/imagenes_expedientes/volunteer/avatar/15/avatar.jpg"

staba tratando de entregar los archivos usando send_file a través del controlador, pero en lugar de cargar la página, solo obtengo la imagen descargada.

  def show
    send_file "#{Rails.root}/imagenes_expedientes/avatar.jpg", :type=>"application/jpg", :x_sendfile=>true
  end

Finalmente, las imágenes se muestran así en las vistas:

<%= image_tag(@volunteer.avatar_url, :alt => "Avatar", :class => "avatar round") if @volunteer.avatar? %>

Esto probablemente se resuelva de manera bastante fácil, pero como soy nuevo en Rails, no sé qué hacer. ¿Debo establecer una ruta? ¿O hay alguna forma de mostrar las imágenes usando el método send_file?

¡Gracias

RESPONDE

Logré mostrar imágenes usando x-sendfile y poniendo: disposition => 'en línea' según lo sugerido por clyfe. Hice una nueva acción en mi controlador:

  def image
    @volunteer = Volunteer.find(params[:id])
    send_file "#{Rails.root}/imagenes_expedientes/#{@volunteer.avatar_url}",:disposition => 'inline', :type=>"application/jpg", :x_sendfile=>true
  end

Añadido a las rutas:

  resources :volunteers do
    member do
      get 'image'
    end 
  end

Y se muestra en las vistas:

<%= image_tag(image_volunteer_path(@volunteer), :alt => "Avatar", :class => "avatar round") if @volunteer.avatar? %>

Espero que ayude a otros!

Respuestas a la pregunta(1)

Su respuesta a la pregunta