module UploadDocumentsTool::Validators::ClassMethods
Public Instance Methods
create_validating_before_filter(attribute, validator_class, options)
click to toggle source
# File lib/upload_documents_tool/validators.rb, line 59 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)
click to toggle source
# File lib/upload_documents_tool/validators.rb, line 50 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)
click to toggle source
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 }
# File lib/upload_documents_tool/validators.rb, line 30 def validates_attachment(*attributes) options = attributes.extract_options!.dup UploadDocumentsTool::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 conditional_options = options.slice(:if, :unless) Array.wrap(validator_options).each do |local_options| method_name = UploadDocumentsTool::Validators.const_get(constant.to_s).helper_method_name send(method_name, attributes, local_options.merge(conditional_options)) end end end end end