我最近将以下内容从使用 Paperclip 转换为上传到 Amazon S3 的 Carrierwave,这样我就可以使用carrierwave_direct gem,然后使用 Sidekiq 或其他后台处理 gem。
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 %>
Carrierwave 上传工作正常,但我不知道如何让直接部分工作。部分原因是我不知道如何合并建议的表单代码:
<%= direct_upload_form_for @uploader do |f| %>
<%= f.file_field :track %>
<%= f.submit %>
<% end %
或者在我的轨道或发布控制器中我放置建议的位置:
@uploader = User.new.track
@uploader.success_action_redirect = new_user_url
自述文件https://github.com/dwilkie/carrierwave_direct和 Railscast http://railscasts.com/episodes/383-uploading-to-amazon-s3都指向首先上传文件,然后创建数据库条目。在我的应用程序中,数据库条目已经存在。Railscast 确实说这是可能的,但没有通过它。所以这是第一个问题。
第二个是我需要一次上传多个文件。上面的代码确实实现了这一点,但速度很慢,而且它当然会使我的应用程序变得毫无用处。
任何人都可以帮忙吗?提前致谢!