app/models/document.rb
class Document < ApplicationRecord
include Attachable
belongs_to :user
belongs_to :documentable, polymorphic: true, touch: true
validates :title, presence: true
validates :user_id, presence: true
validates :documentable_id, presence: true, if: -> { persisted? }
validates :documentable_type, presence: true, if: -> { persisted? }
before_save :remove_metadata
scope :admin, -> { where(admin: true) }
def self.humanized_accepted_content_types
Setting.accepted_content_types_for("documents").join(", ")
end
def humanized_content_type
attachment_content_type.split("/").last.upcase
end
def max_file_size
documentable_class.max_file_size
end
def accepted_content_types
documentable_class.accepted_content_types
end
private
def association_name
:documentable
end
def documentable_class
association_class
end
def remove_metadata
return unless attachment.attached?
attachment_path = ActiveStorage::Blob.service.path_for(attachment.key)
Exiftool.new(attachment_path, "-all:all=")
rescue Exiftool::ExiftoolNotInstalled, Exiftool::NoSuchFile
nil
end
end