validates_attachment_content_type :header, content_type: IMAGE_MIME_TYPES
validates_attachment_size :header, less_than: 2.megabytes
- before_post_process :set_file_extensions
+ include Attachmentable
# Local user profile validations
validates :display_name, length: { maximum: 30 }, if: 'local?'
self.domain = TagManager.instance.normalize_domain(domain)
end
-
- def set_file_extensions
- unless avatar.blank?
- extension = Paperclip::Interpolations.content_type_extension(avatar, :original)
- basename = Paperclip::Interpolations.basename(avatar, :original)
- avatar.instance_write :file_name, [basename, extension].delete_if(&:empty?).join('.')
- end
-
- unless header.blank?
- extension = Paperclip::Interpolations.content_type_extension(header, :original)
- basename = Paperclip::Interpolations.basename(header, :original)
- header.instance_write :file_name, [basename, extension].delete_if(&:empty?).join('.')
- end
- end
end
--- /dev/null
+# frozen_string_literal: true
+
+module Attachmentable
+ extend ActiveSupport::Concern
+
+ included do
+ before_post_process :set_file_extensions
+ end
+
+ private
+
+ def set_file_extensions
+ self.class.attachment_definitions.each_key do |attachment_name|
+ attachment = send(attachment_name)
+ next if attachment.blank?
+ extension = Paperclip::Interpolations.content_type_extension(attachment, :original)
+ basename = Paperclip::Interpolations.basename(attachment, :original)
+ attachment.instance_write :file_name, [basename, extension].delete_if(&:empty?).join('.')
+ end
+ end
+end
has_attached_file :image, styles: { original: '120x120#' }, convert_options: { all: '-quality 80 -strip' }
+ include Attachmentable
+
validates :url, presence: true
validates_attachment_content_type :image, content_type: IMAGE_MIME_TYPES
validates_attachment_size :image, less_than: 1.megabytes