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