codeRIT/hackathon_manager

View on GitHub
app/models/deletable_attachment.rb

Summary

Maintainability
A
0 mins
Test Coverage
# This needs to be included after all has_attached_file statements in a class
module DeletableAttachment
  extend ActiveSupport::Concern

  class_methods do
    def deletable_attachment(name, dependent: :purge_later)
      attr_accessor :"delete_#{name}"

      before_validation { send(name)&.purge if send("delete_#{name}") == '1' }

      define_method :"delete_#{name}=" do |value|
        instance_variable_set :"@delete_#{name}", value
      end
    end
  end
end