carrierwave content_type总是为零

jas*_*li2 5 ruby-on-rails carrierwave

我正在开发Rails 3.2.9应用程序并使用Carrierwave作为文件上传器.Carriverwave自述文件指出了获取正确content_type的方法:

  1. 将'carrierwave/processing/mime_types'添加到初始化程序或上传程序.
  2. 添加包含CarrierWave :: MimeTypes到您的上传器.
  3. 将进程:set_content_type添加到您的上传器.

基于此,我的上传者如下:

# encoding: utf-8
require 'carrierwave/processing/mime_types'
class AttachmentUploader < CarrierWave::Uploader::Base
  include CarrierWave::MimeTypes
  storage :file
  def store_dir
    "#{base_store_dir}/#{model.id}"
  end
  process :set_content_type

end
Run Code Online (Sandbox Code Playgroud)

在我的模型中,将上传器安装为文件:

mount_uploader :file, AttachmentUploader
Run Code Online (Sandbox Code Playgroud)

但是,上传文件后我总是得到content_type nil:

1.9.3-p327 :013 > a.file.class
 => AttachmentUploader
1.9.3-p327 :010 > a.file.file
 => #<CarrierWave::SanitizedFile:0x00000004046330 @file="uploads/course/000/000/026/attachment_file/6/myIcon.png", @original_filename=nil, @content_type=nil> 
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?谢谢.

PS:我已加入gem "mime-types", "~> 1.19"我的Gemfile.

Ada*_*21e 0

我刚刚遇到了完全相同的问题,但找不到简单的解决方法。

我的解决方法是将 content_type 列添加到模型中,并在创建/更新过程中将其设置为

@model.content_type = params[:file_upload][:attachment].content_type
Run Code Online (Sandbox Code Playgroud)

这可行,但希望问题能得到解决。