module BlobVirusScannerConcern extend ActiveSupport::Concern included do self.ignored_columns += [:lock_version] before_create :set_pending end def virus_scanner ActiveStorage::VirusScanner.new(self) end def scan_for_virus_later VirusScannerJob.perform_later(self) end def virus_scanner_error? return true if virus_scanner.infected? return true if virus_scanner.corrupt? false end private def set_pending self.virus_scan_result = metadata[:virus_scan_result] || ActiveStorage::VirusScanner::PENDING end end