Skip to content
Extraits de code Groupes Projets
site_upload.rb 1,02 ko
Newer Older
  • Learn to ignore specific revisions
  • # frozen_string_literal: true
    # == Schema Information
    #
    # Table name: site_uploads
    #
    
    #  id                :bigint(8)        not null, primary key
    
    #  var               :string           default(""), not null
    #  file_file_name    :string
    #  file_content_type :string
    #  file_file_size    :integer
    #  file_updated_at   :datetime
    #  meta              :json
    #  created_at        :datetime         not null
    #  updated_at        :datetime         not null
    #
    
    class SiteUpload < ApplicationRecord
      has_attached_file :file
    
      validates_attachment_content_type :file, content_type: /\Aimage\/.*\z/
    
      validates :file, presence: true
    
      validates :var, presence: true, uniqueness: true
    
      before_save :set_meta
      after_commit :clear_cache
    
      def cache_key
        "site_uploads/#{var}"
      end
    
      private
    
      def set_meta
        tempfile = file.queued_for_write[:original]
    
        return if tempfile.nil?
    
    
        width, height = FastImage.size(tempfile.path)
        self.meta = { width: width, height: height }
    
      end
    
      def clear_cache
        Rails.cache.delete(cache_key)
      end
    end