2

バックグラウンドで Amazon S3 に画像をアップロードするために、Sidekiq で CarrierWave Direct を使用しています。画像は期待どおりにアップロードされていますが、画像レコードをデータベースに追加できないようです。エラーが発生すると、それが得られfilename can't be blankます。

関連するコードは次のとおりです。

app/uploaders/image_uploader.rb

class ImageUploader < CarrierWave::Uploader::Base

  include CarrierWaveDirect::Uploader

  include CarrierWave::MimeTypes
  process :set_content_type

end

アプリ/コントローラー/管理者/images_controller.rb

  def index
    @uploader = Image.new.filename
    @uploader.success_action_redirect = new_admin_project_image_url(@project)
    render "new"
  end

  def new
    @image = Image.new
    @image.filename = params[:key]
    @image.imageable = @project
    unless @image.save
      raise @image.errors.to_yaml
    end
  end

アプリ/モデル/image.rb

class Image < ActiveRecord::Base
  attr_accessible :imageable_id, :imageable_type, :filename

  validates :filename, presence: true
  validates :imageable_id, presence: true
  validates :imageable_type, presence: true

  belongs_to :imageable, polymorphic: true

  mount_uploader :filename, ImageUploader
end

アプリ/ビュー/管理者/画像/new.html.erb

<%= direct_upload_form_for @uploader do |f| %>
  <p><%= f.file_field :filename %></p>
  <p><%= f.submit "Upload Image" %></p>
<% end %>
4

1 に答える 1