lib/attached.rb in attached-0.1.8 vs lib/attached.rb in attached-0.1.9

- old
+ new

@@ -63,10 +63,17 @@ define_method "#{name}?" do attachment_for(name).file? end + validates_each(name) do |record, attr, value| + attachment = record.attachment_for(name) + attachment.errors.each do |error| + record.errors.add(name, error) + end + end + after_validation do self.errors[:"#{name}_size"].each do |message| self.errors.add(name, message) end @@ -122,9 +129,32 @@ message.gsub!(/:minimum/, number_to_size(minimum)) unless minimum == zero message.gsub!(/:maximum/, number_to_size(maximum)) unless maximum == infi validates_inclusion_of :"#{name}_size", :in => range, :message => message, :if => options[:if], :unless => options[:unless] + + end + + + # Validates an attached extension in a specified set. + # + # Options: + # + # * :in - allowed values for attached + # + # Usage: + # + # validates_attached_extension :avatar, :in => %w(png jpg) + # validates_attached_extension :avatar, :in => [:png, :jpg] + # validates_attached_extension :avatar, :in => %w(png jpg), :message => "extension must be :in" + # validates_attached_extension :avatar, :in => %w(png jpg), :message => "extension must be :in" + + def validates_attached_extension(name, options = {}) + + message = options[:message] + message ||= "extension must be specified" + + range = options[:in].map { |element| /element/ } end # Validates that an attachment is included. \ No newline at end of file