module ActiveScaffold::Bridges::ActiveStorage::ActiveStorageBridgeHelpers

Public Class Methods

active_storage_has_many_fields(klass) click to toggle source

has_many :“#{name}_attachments”, -> { where(name: name) }, as: :record, class_name: “ActiveStorage::Attachment”, inverse_of: :record, dependent: false do

# File lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb, line 12
def active_storage_has_many_fields(klass)
  klass.reflect_on_all_associations(:has_many)&.select { |reflection| reflection.class_name == 'ActiveStorage::Attachment' } &.collect { |association| association.name[0..-13] } || []
end
active_storage_has_one_fields(klass) click to toggle source

has_one :“#{name}_attachment”, -> { where(name: name) }, class_name: “ActiveStorage::Attachment”, as: :record, inverse_of: :record, dependent: false

# File lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb, line 7
def active_storage_has_one_fields(klass)
  klass.reflect_on_all_associations(:has_one)&.select { |reflection| reflection.class_name == 'ActiveStorage::Attachment' } &.collect { |association| association.name[0..-12] } || []
end
generate_delete_helpers(klass) click to toggle source
# File lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb, line 20
          def generate_delete_helpers(klass)
            (active_storage_has_one_fields(klass) | active_storage_has_many_fields(klass)).each do |field|
              klass.send :class_eval, <<-CODE, __FILE__, __LINE__ + 1 unless klass.method_defined?(:"#{field}_with_delete=")
                attr_reader :delete_#{field}

                def delete_#{field}=(value)
                  value = (value=="true") if String===value
                  return unless value

                  # passing nil to the file column causes the file to be deleted.
                  self.#{field}.purge
                end
              CODE
            end
          end
klass_has_active_storage_fields?(klass) click to toggle source
# File lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb, line 16
def klass_has_active_storage_fields?(klass)
  active_storage_has_one_fields(klass).present? || active_storage_has_many_fields(klass).present?
end

Public Instance Methods

active_storage_has_many_fields() click to toggle source
# File lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb, line 41
def active_storage_has_many_fields
  @active_storage_has_many_fields ||= ActiveStorageBridgeHelpers.active_storage_has_many_fields(self)
end
active_storage_has_one_fields() click to toggle source
# File lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb, line 37
def active_storage_has_one_fields
  @active_storage_has_one_fields ||= ActiveStorageBridgeHelpers.active_storage_has_one_fields(self)
end
generate_delete_helpers() click to toggle source
# File lib/active_scaffold/bridges/active_storage/active_storage_helpers.rb, line 45
def generate_delete_helpers
  ActiveStorageBridgeHelpers.generate_delete_helpers(self)
end