CarrierWave使用单个上传器进行多种文件类型验证

max*_*s ツ 3 ruby-on-rails-3 carrierwave

如何在单个上传器用于多种文件类型时验证上传文件的扩展名?

我正在使用单一模型,即包含属性文件的Asset.上传器安装在文件属性上.资产模型还有一个名为feature_id的属性.feature_id指的是视频,音频等功能.

那么,我应该如何根据feature_id值验证具有多个扩展名白名单的文件类型?

使用ruby 1.9和rails 3.2.11

任何帮助将不胜感激.

Pol*_*her 5

在上传器中定义您的白名单,如载波文档中所示.

class MyUploader < CarrierWave::Uploader::Base
  def extension_white_list
    %w(jpg jpeg gif png)
  end
end
Run Code Online (Sandbox Code Playgroud)


KUL*_*ING 5

虽然答案已被接受,但我有更好的方法.试试这个代码.

class MyUploader < CarrierWave::Uploader::Base
  def extension_white_list
    if model.feature_id == 1
      %w(jpg jpeg gif png)
    elsif model.feature_id == 2
      %w(pdf doc docx xls xlsx)
    elsif model.feature_id == 3
      %w(mp3 wav wma ogg)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

feature_id == 1意味着您只想允许图片上传,这feature_id == 2意味着只允许上传文档并feature_id == 3允许您仅上传音频文件.

希望它能回答这个问题.您可以为其他类型的文件添加更多检查.

  • 对不起我不是那个问这个问题的人,我只是想知道feature_id如何获得MyUploader? (2认同)