Method: Paperclip::ClassMethods#validates_attachment_content_type
- Defined in:
- lib/paperclip.rb
#validates_attachment_content_type(name, options = {}) ⇒ Object
Places ActiveRecord-style validations on the content type of the file assigned. The possible options are:
-
content_type
: Allowed content types. Can be a single content type or an array. Each type can be a String or a Regexp. It should be noted that Internet Explorer upload files with content_types that you may not expect. For example, JPEG images are given image/pjpeg and PNGs are image/x-png, so keep that in mind when determining how you match. Allows all by default. -
message
: The message to display when the uploaded file has an invalid content type. -
if
: A lambda or name of a method on the instance. Validation will only be run is this lambda or method returns true. -
unless
: Same asif
but validates if lambda or method returns false.
NOTE: If you do not specify an [attachment]_content_type field on your model, content_type validation will work _ONLY upon assignment_ and re-validation after the instance has been reloaded will always succeed.
326 327 328 329 330 331 332 333 334 335 336 337 338 339 |
# File 'lib/paperclip.rb', line 326 def name, = {} = .dup allowed_types = [[:content_type]].flatten validates_each(:"#{name}_content_type", ) do |record, attr, value| if !allowed_types.any?{|t| t === value } && !(value.nil? || value.blank?) if record.errors.method(:add).arity == -2 = [:message] || "is not one of #{allowed_types.join(", ")}" record.errors.add(:"#{name}_content_type", ) else record.errors.add(:"#{name}_content_type", :inclusion, :default => [:message], :value => value) end end end end |