Sha256: d2d24713759c6ce587f165c4165e21025019dcf250024bbd8835c5a5f0678fc8

Contents?: true

Size: 1.16 KB

Versions: 33

Compression:

Stored size: 1.16 KB

Contents

# frozen_string_literal: true
require "active_admin/resource"
require "active_admin/resource/model"

module ActiveAdmin
  class ResourceController < BaseController
    module PolymorphicRoutes
      def polymorphic_url(record_or_hash_or_array, options = {})
        super(map_named_resources_for(record_or_hash_or_array), options)
      end

      def polymorphic_path(record_or_hash_or_array, options = {})
        super(map_named_resources_for(record_or_hash_or_array), options)
      end

      private

      def map_named_resources_for(record_or_hash_or_array)
        return record_or_hash_or_array unless record_or_hash_or_array.is_a?(Array)

        record_or_hash_or_array.map { |record| to_named_resource(record) }
      end

      def to_named_resource(record)
        if record.is_a?(resource_class)
          return ActiveAdmin::Model.new(active_admin_config, record)
        end

        belongs_to_resource = active_admin_config.belongs_to_config.try(:resource)
        if belongs_to_resource && record.is_a?(belongs_to_resource.resource_class)
          return ActiveAdmin::Model.new(belongs_to_resource, record)
        end

        record
      end
    end
  end
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
activeadmin-3.3.0 lib/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-4.0.0.beta15 app/controllers/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-4.0.0.beta14 app/controllers/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-4.0.0.beta13 app/controllers/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-4.0.0.beta12 app/controllers/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-3.2.5 lib/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-4.0.0.beta11 app/controllers/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-3.2.4 lib/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-4.0.0.beta10 app/controllers/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-4.0.0.beta9 app/controllers/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-3.2.3 lib/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-4.0.0.beta8 app/controllers/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-4.0.0.beta7 app/controllers/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-3.2.2 lib/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-4.0.0.beta6 app/controllers/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-3.2.1 lib/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-4.0.0.beta5 app/controllers/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-4.0.0.beta4 app/controllers/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-4.0.0.beta3 app/controllers/active_admin/resource_controller/polymorphic_routes.rb
activeadmin-4.0.0.beta2 app/controllers/active_admin/resource_controller/polymorphic_routes.rb