Sha256: ee451639551165549bb83261f850886ef824b197a2a25d769ea67c1a26fa747f

Contents?: true

Size: 1.49 KB

Versions: 13

Compression:

Stored size: 1.49 KB

Contents

require 'active_model'
require 'active_support/concern'
require 'paperclip/validators/attachment_content_type_validator'
require 'paperclip/validators/attachment_presence_validator'
require 'paperclip/validators/attachment_size_validator'

module Paperclip
  module Validators
    extend ActiveSupport::Concern

    included do
      extend  HelperMethods
      include HelperMethods
    end

    module ClassMethods
      # This method is a shortcut to validator classes that is in
      # "Attachment...Validator" format. It is almost the same thing as the
      # +validates+ method that shipped with Rails, but this is customized to
      # be using with attachment validators. This is helpful when you're using
      # multiple attachment validators on a single attachment.
      #
      # Example of using the validator:
      #
      #   validates_attachment :avatar, :presence => true,
      #      :content_type => { :content_type => "image/jpg" },
      #      :size => { :in => 0..10.kilobytes }
      #
      def validates_attachment(*attributes)
        options = attributes.extract_options!.dup

        Paperclip::Validators.constants.each do |constant|
          if constant.to_s =~ /^Attachment(.+)Validator$/
            validator_kind = $1.underscore.to_sym

            if options.has_key?(validator_kind)
              options[:"attachment_#{validator_kind}"] = options.delete(validator_kind)
            end
          end
        end

        validates(*attributes + [options])
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
paperclip-3.4.2 lib/paperclip/validators.rb
paperclip-3.4.1 lib/paperclip/validators.rb
paperclip-3.4.0 lib/paperclip/validators.rb
paperclip-3.3.1 lib/paperclip/validators.rb
paperclip-3.2.1 lib/paperclip/validators.rb
paperclip-3.3.0 lib/paperclip/validators.rb
paperclip-3.2.0 lib/paperclip/validators.rb
paperclip-3.1.4 lib/paperclip/validators.rb
paperclip-3.1.2 lib/paperclip/validators.rb
paperclip-3.1.1 lib/paperclip/validators.rb
paperclip-3.1.0 lib/paperclip/validators.rb
paperclip-3.0.4 lib/paperclip/validators.rb
paperclip-3.0.3 lib/paperclip/validators.rb