2013-04-12 18 views
1

我使用carrierwave上傳圖像。我遇到的問題是content_type沒有保存到數據庫中。我可以看到content_type被傳遞到請求中(如下所示),但似乎沒有將其傳遞給數據庫。Carrierwave未設置content_type

upload.rb

class Upload < ActiveRecord::Base 
    mount_uploader :file, FileUploader 
    attr_accessible :file 
end 

file_uploader.rb

require 'carrierwave/processing/mime_types' 

class FileUploader < CarrierWave::Uploader::Base 
    include CarrierWave::MimeTypes 

    storage :fog 
    process :set_content_type 
end 

uploads_controller.rb

def create 
    @upload = Upload.new params[:upload] 
    if @upload.save 
     render :json => @upload 
    end 
    end 

schema.rb

create_table "uploads", :force => true do |t| 
    t.date  "expired_at" 
    t.datetime "created_at",  :null => false 
    t.datetime "updated_at",  :null => false 
    t.string "file" 
    t.text  "slug" 
    t.string "file_content_type" 
    end 

POST請求

Started POST "/uploads" for 127.0.0.1 at 2013-04-11 22:54:56 -0400 
Processing by UploadsController#create as */* 
    Parameters: {"name"=>"IMG_0004.JPG", "authenticity_token"=>"00kuSJQvgkWmCo+bWBQQzhzwC2qWdsF6T3K6DLuv0l8=", "upload"=>{"file"=>#<ActionDispatch::Http::UploadedFile:0x007fcb34399570 @original_filename="IMG_0004.JPG", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"upload[file]\"; filename=\"IMG_0004.JPG\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<File:/var/folders/9f/zccg30y961g1kl0zc_kzkfw00000gn/T/RackMultipart20130411-90625-1je1uyu>>}} 

回答

0

更改你的列名:content_type,它應該開始工作。

+0

不工作的MIME類型字段。我嘗試過使用':content_type'以及':file_content_type',並且這兩列都沒有設置 –

0

了同樣的問題想這在我的模型文件,其中我登上上傳

before_save :set_mime_type     

    def set_mime_type 
     self.mimetype = Mime::Type.lookup_by_extension(File.extname(self.cf_filename.to_s)[1..-1]) 
    end 

注意:您需要在表中