class Avatar < ActiveRecord::Base

  attr_accessor :content_type, :original_filename, :image_data
  before_save :decode_base64_image

  has_attached_file :image,
    PAPERCLIP_CONFIG.merge(
    :styles => {
      :thumb => '32x32#',
      :medium => '64x64#',
      :large => '256x256#'
    })

  protected
    def decode_base64_image
      if image_data && content_type && original_filename
        decoded_data = Base64.decode64(image_data)

        data = StringIO.new(decoded_data)
        data.class_eval do
          attr_accessor :content_type, :original_filename
        end

        data.content_type = content_type
        data.original_filename = File.basename(original_filename)

        self.image = data
      end
    end
end