# friendlier attachment validations by Tim Lucas # ref.: http://toolmantim.com/article/2007/12/3/rollin_your_own_attachment_fu_messages_evil_twin_stylee Technoweenie::AttachmentFu::InstanceMethods.module_eval do protected def attachment_valid? if self.filename.nil? errors.add_to_base attachment_validation_options[:empty] return end [:content_type, :size].each do |option| if attachment_validation_options[option] && attachment_options[option] && !attachment_options[option].include?(self.send(option)) errors.add_to_base attachment_validation_options[option] end end end end Technoweenie::AttachmentFu::ClassMethods.module_eval do # Options: # * :empty - Base error message when no file is uploaded. Default is "No file uploaded" # * :content_type - Base error message when the uploaded file is not a valid content type. # * :size - Base error message when the uploaded file is not a valid size. # # Example: # validates_attachment :content_type => "The file you uploaded was not a JPEG, PNG or GIF", # :size => "The image you uploaded was larger than the maximum size of 10MB" def validates_attachment(options={}) options[:empty] ||= "No file uploaded" class_inheritable_accessor :attachment_validation_options self.attachment_validation_options = options validate :attachment_valid? end end