Cargas directas a S3 utilizando Carrierwave

Recientemente he convertido lo siguiente de usar Paperclip a Carrierwave subido a Amazon S3, así que puedo usar la gema carrierwave_direct y luego Sidekiq u otra gema de procesamiento en segundo plano.

class Release < ActiveRecord::Base
  has_many :releases_tracks, :dependent => :destroy
  has_many :tracks, :through => :releases_tracks, :order => "releases_tracks.position DESC"
  accepts_nested_attributes_for :tracks, :reject_if => lambda { |a| a[:name].blank? }, :allow_destroy => :true
  accepts_nested_attributes_for :releases_tracks  
end

class Track < ActiveRecord::Base
  mount_uploader :track, TrackUploader
  has_many :releases_tracks, :dependent => :destroy
  has_many :releases, :through => :releases_tracks 
end

/views/releases/track_upload.html.erb

<%= form_for(@release, :html => { :multipart => true }) do |f| %>
<h3>Upload Tracks for <%= @release.title %></h3>
    <% index = 0 %>
    <%= f.fields_for :tracks do |builder| %>
    <%= @release.tracks[index].name %>
        <%= f.file_field :track, :class => "file styled", :title => 'Select Track'%>
    <% index += 1 %>
    <% end %>

    <%= f.submit "Upload Tracks", :class => "submit" %>
<% end %>

Las cargas de Carrierwave están funcionando, pero no puedo descubrir cómo hacer funcionar la parte directa. En parte porque no puedo averiguar cómo incorporar el código de formulario sugerido:

<%= direct_upload_form_for @uploader do |f| %>
  <%= f.file_field :track %>
  <%= f.submit %>
<% end %

O el lugar donde en mi pista O lanzar el controlador coloco lo sugerido:

@uploader = User.new.track
@uploader.success_action_redirect = new_user_url

El readmehttps://github.com/dwilkie/carrierwave_direct y Railscasthttp://railscasts.com/episodes/383-upload-to-amazon-s3 ambos apuntan a cargar su archivo primero y luego crear su entrada de base de datos. En mi aplicación ya existen las entradas db. El Railscast dice que es posible pero no pasa por eso. Así que ese es el primer problema.

La segunda es que necesito cargar más de un archivo a la vez. El código anterior logra eso, pero muy lentamente y, por supuesto, hace que mi aplicación sea bastante inútil al hacerlo.

¿Alguien puede ayudar? ¡Gracias masivas por adelantado!

Respuestas a la pregunta(1)

Su respuesta a la pregunta