Sha256: 2e93afcfb00b301c19fcca1afcbb3febdf4b738fbab371892351012a6d49bec7

Contents?: true

Size: 1.26 KB

Versions: 22

Compression:

Stored size: 1.26 KB

Contents

# frozen_string_literal: true
module ActiveAdmin

  class Resource
    module Attributes

      def default_attributes
        resource_class.columns.each_with_object({}) do |c, attrs|
          unless reject_col?(c)
            name = c.name.to_sym
            attrs[name] = (method_for_column(name) || name)
          end
        end
      end

      def method_for_column(c)
        resource_class.respond_to?(:reflect_on_all_associations) && foreign_methods.has_key?(c) && foreign_methods[c].name.to_sym
      end

      def foreign_methods
        @foreign_methods ||= resource_class.reflect_on_all_associations.
          select { |r| r.macro == :belongs_to }.
          reject { |r| r.chain.length > 2 && !r.options[:polymorphic] }.
          index_by { |r| r.foreign_key.to_sym }
      end

      def reject_col?(c)
        primary_col?(c) || sti_col?(c) || counter_cache_col?(c) || filtered_col?(c)
      end

      def primary_col?(c)
        c.name == resource_class.primary_key
      end

      def sti_col?(c)
        c.name == resource_class.inheritance_column
      end

      def counter_cache_col?(c)
        c.name.end_with?("_count")
      end

      def filtered_col?(c)
        ActiveAdmin.application.filter_attributes.include?(c.name.to_sym)
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
activeadmin-4.0.0.beta8 lib/active_admin/resource/attributes.rb
activeadmin-4.0.0.beta7 lib/active_admin/resource/attributes.rb
activeadmin-3.2.2 lib/active_admin/resource/attributes.rb
activeadmin-4.0.0.beta6 lib/active_admin/resource/attributes.rb
activeadmin-3.2.1 lib/active_admin/resource/attributes.rb
activeadmin-4.0.0.beta5 lib/active_admin/resource/attributes.rb
activeadmin-4.0.0.beta4 lib/active_admin/resource/attributes.rb
activeadmin-4.0.0.beta3 lib/active_admin/resource/attributes.rb
activeadmin-4.0.0.beta2 lib/active_admin/resource/attributes.rb
activeadmin-4.0.0.beta1 lib/active_admin/resource/attributes.rb
activeadmin-3.2.0 lib/active_admin/resource/attributes.rb
activeadmin-3.1.0 lib/active_admin/resource/attributes.rb
activeadmin-3.0.0 lib/active_admin/resource/attributes.rb
activeadmin-2.14.0 lib/active_admin/resource/attributes.rb
activeadmin-2.13.1 lib/active_admin/resource/attributes.rb
activeadmin-2.13.0 lib/active_admin/resource/attributes.rb
activeadmin-2.12.0 lib/active_admin/resource/attributes.rb
activeadmin-2.11.2 lib/active_admin/resource/attributes.rb
activeadmin-2.11.1 lib/active_admin/resource/attributes.rb
activeadmin-2.11.0 lib/active_admin/resource/attributes.rb