Is it possible to enforce a 'content type' validation in paperclip without enforcing a 'presence' validation (i.e. allow blanks)? I currently have:
class Person < ActiveRecord::Base
has_attached_file :picture
validates_attachment_content_type :picture, :content_type => ['image/jpeg', 'image/jpg', 'image/png']
end
However, this fails if no attachment is present. For example:
>> @person = Person.new
>> @person.save
>> @person.errors.first
=> ["picture_content_type", "is not one of image/jpeg, image/jpg, image/png"]
Is it possible to do the validation only if an attachment is included.
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?
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
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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With