vendor/plugins/images/app/models/image.rb in refinerycms-0.9.6.7 vs vendor/plugins/images/app/models/image.rb in refinerycms-0.9.6.8
- old
+ new
@@ -1,27 +1,35 @@
class Image < ActiveRecord::Base
+ # What is the max image size a user can upload
+ MAX_SIZE_IN_MB = 20
+
# Docs for attachment_fu http://github.com/technoweenie/attachment_fu
has_attachment :content_type => :image,
:storage => (USE_S3_BACKEND ? :s3 : :file_system),
:path_prefix => (USE_S3_BACKEND ? nil : 'public/system/images'),
:processor => 'Rmagick',
:thumbnails => ((((thumbnails = RefinerySetting.find_or_set(:image_thumbnails, {})).is_a?(Hash) ? thumbnails : (RefinerySetting[:image_thumbnails] = {}))) rescue {}),
- :max_size => 50.megabytes
+ :max_size => MAX_SIZE_IN_MB.megabytes
- def validate
- if self.filename.nil?
- errors.add_to_base("You must choose an image to upload")
- else
- [:size, :content_type].each do |attr_name|
- enum = attachment_options[attr_name]
- unless enum.nil? || enum.include?(send(attr_name))
- errors.add_to_base("Images should be smaller than 50 MB in size") if attr_name == :size
- errors.add_to_base("Your image must be either a JPG, PNG or GIF") if attr_name == :content_type
- end
- end
- end
- end
+ # we could use validates_as_attachment but it produces 4 odd errors like
+ # "size is not in list". So we basically here enforce the same validation
+ # rules here accept display the error messages we want
+ # This is a known bug in attachment_fu
+ def validate
+ if self.filename.nil?
+ errors.add_to_base("You must choose an image to upload")
+ else
+ [:size, :content_type].each do |attr_name|
+ enum = attachment_options[attr_name]
+
+ unless enum.nil? || enum.include?(send(attr_name))
+ errors.add_to_base("Images should be smaller than #{MAX_SIZE_IN_MB} MB in size") if attr_name == :size
+ errors.add_to_base("Your image must be either a JPG, PNG or GIF") if attr_name == :content_type
+ end
+ end
+ end
+ end
# Docs for acts_as_indexed http://github.com/dougal/acts_as_indexed
acts_as_indexed :fields => [:title],
:index_file => [Rails.root.to_s, "tmp", "index"]