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