Module: Paperclip::Validators::ClassMethods

Defined in:
lib/paperclip/validators.rb

Instance Method Summary collapse

Instance Method Details

#create_validating_before_filter(attribute, validator_class, options) ⇒ Object



57
58
59
60
61
62
63
# File 'lib/paperclip/validators.rb', line 57

def create_validating_before_filter(attribute, validator_class, options)
  if_clause = options.delete(:if)
  unless_clause = options.delete(:unless)
  send(:"before_#{attribute}_post_process", :if => if_clause, :unless => unless_clause) do |*args|
    validator_class.new(options.dup).validate(self)
  end
end

#validate_before_processing(validator_class, options) ⇒ Object



48
49
50
51
52
53
54
55
# File 'lib/paperclip/validators.rb', line 48

def validate_before_processing(validator_class, options)
  options = options.dup
  attributes = options.delete(:attributes)
  attributes.each do |attribute|
    options[:attributes] = [attribute]
    create_validating_before_filter(attribute, validator_class, options)
  end
end

#validates_attachment(*attributes) ⇒ Object

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 }


29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/paperclip/validators.rb', line 29

def validates_attachment(*attributes)
  options = attributes.extract_options!.dup

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

      if options.has_key?(validator_kind)
        validator_options = options.delete(validator_kind)
        validator_options = {} if validator_options == true
        local_options = attributes + [validator_options]
        conditional_options = options.slice(:if, :unless)
        local_options.last.merge!(conditional_options)
        send(:"validates_attachment_#{validator_kind}", *local_options)
      end
    end
  end
end