Validate Attachment Content Type Paperclip

后端 未结 4 834
生来不讨喜
生来不讨喜 2021-01-06 03:12

Is it possible to enforce a \'content type\' validation in paperclip without enforcing a \'presence\' validation (i.e. allow blanks)? I currently have:

class         


        
相关标签:
4条回答
  • 2021-01-06 03:41

    This worked for me;

    validates_attachment :image1, :presence => true,
                             :content_type => { :content_type => "image/jpg" },
                             :size => { :in => 0..10.kilobytes }
    
    0 讨论(0)
  • 2021-01-06 03:42

    I'm not sure that method is the cause of your failure; Here's my simple class

    class Image < ActiveRecord::Base
      has_attached_file :photo, {
                :styles => { :large => "700x400#", :medium=>"490x368#", :thumbnail=>"75x75#" },
                :default_url => "/images/thumbnail/blank-recipe.png"}
      validates_attachment_content_type :photo, :content_type => /image/ 
    end
    

    Then, if I:

    Image.new.valid?
    #this is true
    

    You might be doing other paperclip validations, though. Can you post a simple example?

    0 讨论(0)
  • 2021-01-06 03:46

    Working example

    In the following model only image/png, image/gif and image/jpeg are valid content types for the image attachment.

    class Photo
      has_attached_file :image
      validates_attachment_content_type :image, 
                                        :content_type => /^image\/(png|gif|jpeg)/
    end
    

    Specs

    describe Photo do
      it { should validate_attachment_content_type(:image).  
                  allowing('image/png', 'image/gif', 'image/jpeg').      
                  rejecting('text/plain', 'text/xml', 'image/abc', 'some_image/png') }
    end
    

    More info

    You could also take a look at the AttachmentContentTypeValidator class with is responsible for doing the validation.

    Or take a look at its tests which contain more examples.

    0 讨论(0)
  • 2021-01-06 03:49

    validates_content_type accepts :if => Proc.new{|r| !r.content_type.blank?} in it's options hash, perhaps that would solve your problem.

    http://rdoc.info/github/thoughtbot/paperclip#

    0 讨论(0)
提交回复
热议问题