0

次の方法を使用して、アップロードされたファイル コンテンツの MIME タイプを搬送波で検証しています。

https://gist.github.com/denyago/1298417

ただし、コンテンツがアップロードされていない場合でも、この検証は常に実行されています。検証するものが何もないため、これは明らかに失敗します。

 validates :logo, :file_mime_type => {:content_type => /image/}

コンテンツがアップロードされていない場合に検証をスキップする回避策はありますか?

ありがとう !!

アップデート:

proc または lambda を使用すると、アップロードされたコンテンツが存在しなくなるまでうまく機能します。

      ..., if => Proc.new{|company| company.logo.present?}

      @company.save #works will when @company contains correct mime type logo file 

      @company.save #fails when @company contains no logo file  

誰かがロゴをアップロードするとすぐに、オブジェクトが正しく保存され、画像のアップロードが存在しない他の保存で間違った MIME タイプの例外が発生し始めます。

4

3 に答える 3

0

if 条件を追加してみてください。例えば:

validates :logo, :file_mime_type => {:content_type => /image/}, :if => Proc.new{|img| img.logo.present?}

于 2013-02-08T10:31:29.323 に答える
-1

キャリアウェーブのドキュメントに記載されているとおり。

class MyUploader < CarrierWave::Uploader::Base
  def extension_white_list
   %w(jpg jpeg gif png)
  end
end
于 2013-02-15T00:20:44.993 に答える