Sha256: a05b48ca82db3f67c4982d303e8dbf04ee595160de149c0bcf3f0053ae0fdc57

Contents?: true

Size: 1.33 KB

Versions: 12

Compression:

Stored size: 1.33 KB

Contents

require 'rails_admin/config/fields'
require 'rails_admin/config/fields/types'
require 'rails_admin/config/fields/types/file_upload'

RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
  if defined?(::ActiveStorage) && properties.try(:association?) && (match = /\A(.+)_attachments?\Z/.match properties.name) && properties.klass.to_s == 'ActiveStorage::Attachment'
    name = match[1]
    field = RailsAdmin::Config::Fields::Types.load(
      properties.type == :has_many ? :multiple_active_storage : :active_storage,
    ).new(parent, name, properties)
    fields << field
    associations =
      if properties.type == :has_many
        ["#{name}_attachments".to_sym, "#{name}_blobs".to_sym]
      else
        ["#{name}_attachment".to_sym, "#{name}_blob".to_sym]
      end
    children_fields = associations.map do |child_name|
      next unless child_association = parent.abstract_model.associations.detect { |p| p.name.to_sym == child_name }
      child_field = fields.detect { |f| f.name == child_name } || RailsAdmin::Config::Fields.default_factory.call(parent, child_association, fields)
      child_field.hide unless field == child_field
      child_field.filterable(false) unless field == child_field
      child_field.name
    end.flatten.compact
    field.children_fields(children_fields)
    true
  else
    false
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
rails_admin-2.3.1 lib/rails_admin/config/fields/factories/active_storage.rb
rails_admin-2.3.0 lib/rails_admin/config/fields/factories/active_storage.rb
rails_admin-2.2.1 lib/rails_admin/config/fields/factories/active_storage.rb
rails_admin-2.2.0 lib/rails_admin/config/fields/factories/active_storage.rb
rails_admin-2.1.1 lib/rails_admin/config/fields/factories/active_storage.rb
rails_admin-2.1.0 lib/rails_admin/config/fields/factories/active_storage.rb
rails_admin-2.0.2 lib/rails_admin/config/fields/factories/active_storage.rb
rails_admin-1.4.3 lib/rails_admin/config/fields/factories/active_storage.rb
rails_admin-2.0.1 lib/rails_admin/config/fields/factories/active_storage.rb
rails_admin-2.0.0 lib/rails_admin/config/fields/factories/active_storage.rb
rails_admin-2.0.0.rc lib/rails_admin/config/fields/factories/active_storage.rb
rails_admin-2.0.0.beta lib/rails_admin/config/fields/factories/active_storage.rb