【发布时间】:2012-08-24 10:46:09
【问题描述】:
我正在使用CarrierWave,我想验证文件名,并且仅在扩展名为.gif、.png、.jpg、.jpeg、或者如果有没有文件扩展名。
有时用户会上传没有扩展名的文件。例如:
http://t2.gstatic.com/images?q=tbn:ANd9GcTCD2TLvYI8a4ChgBaYK_JaRfedvXLr3HXQfj0arXXAii3o2yjf
我知道在 uploaders/image_uploader.rb 中取消注释以下行的可能性,但我不知道另外说“只有在有文件扩展名时才允许这些扩展名”。
# Add a white list of extensions which are allowed to be uploaded.
# For images you might use something like this:
#def extension_white_list
# %w(gif jpg jpeg png)
#end
同样,在我的模型中,我进行了如下验证,但由于某种原因,bad-extension.bad 通过了。
validates :image, allow_blank: true, format: {
with: %r{\.(gif|jpe?g|png)\z}i,
message: 'must be a GIF, JPG, or PNG'
}, if: :filename_has_extension?
def filename_has_extension?
image =~ /\./
end
【问题讨论】:
标签: ruby-on-rails validation ruby-on-rails-3.2 carrierwave image-uploading