Sha256: 5fb27e8debf1d386da1661f69e8123995cceae126d39461c735b421ba3db9dc9

Contents?: true

Size: 1.43 KB

Versions: 3

Compression:

Stored size: 1.43 KB

Contents

require 'active_support/concern'


module KonoUtils::Concerns
  ##
  # Includendo questo modulo nell'application record, possiamo andare injettare metodi necessari per la gestione
  # dell'attributo virtuale per cancellare il file allegato
  # Usage:
  #
  # class Test < ApplicationRecord
  #
  #    has_one_attached :doc
  #    has_one_attached_remover :doc
  #
  # end
  #
  # Ricordarsi di aggiungere anche nella policy il nome del campo da ritornare dalla form, il nome dell'attributo
  # รจ  kono_utils_purge_NOME_ATTRIBUTO
  #
  #
  #
  module ActiveStorageRemoverHelper
    extend ActiveSupport::Concern
    #
    # included do
    #
    # end

    module ClassMethods

      ##
      # Costruisce i metodi e attributi necessari al modello per gestire la rimozione attraverso l'interfaccia del
      # file allegato
      # @param [String,Symbol] field_name
      def has_one_attached_remover(field_name)

        attr = attribute_purger_name(field_name)
        callback = "make_#{attr}".to_sym
        attr_accessor attr

        after_save callback, if: attr

        define_method(callback) do
          if self.send(field_name.to_sym).attached?
            self.send(field_name.to_sym).purge_later
          end
        end

      end

      ##
      # Nome dell'attributo da generare
      # @param [String] field
      # @return [Symbol]
      def attribute_purger_name(field)
        "kono_utils_purge_#{field}".to_sym
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
kono_utils-1.1.2 lib/kono_utils/concerns/active_storage_remover_helper.rb
kono_utils-1.1.1 lib/kono_utils/concerns/active_storage_remover_helper.rb
kono_utils-1.1.0 lib/kono_utils/concerns/active_storage_remover_helper.rb