estoy usando CarrierWave, y me gustaría validar los nombres de archivo y sólo permiten la carga de archivos si la extensión es .gif
, .png
, .jpg
, .jpeg
, o si no hay ninguna extensión de archivo.¿Cómo validar una extensión de archivo solo si hay una extensión de archivo? Re: carrierwave
A veces los usuarios cargan archivos sin extensiones. Por ejemplo:
http://t2.gstatic.com/images?q=tbn:ANd9GcTCD2TLvYI8a4ChgBaYK_JaRfedvXLr3HXQfj0arXXAii3o2yjf
Soy consciente de la posibilidad de descomentando las siguientes líneas en uploaders/image_uploader.rb
, pero no sé de una manera de decir, además, "permiten que cualquiera de estas extensiones sólo si hay una extensión de archivo ".
# 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
A su vez, en mi modelo que tienen una validación de la siguiente manera, pero por alguna razón bad-extension.bad
pases.
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