Sha256: 8f830f7630cd61b0fa858c7459282fe98804ee462884e775456421f0b95f521a

Contents?: true

Size: 1.77 KB

Versions: 20

Compression:

Stored size: 1.77 KB

Contents

# frozen_string_literal: true
module ActiveAdmin
  module Inputs
    module Filters
      class SelectInput < ::Formtastic::Inputs::SelectInput
        include Base

        def input_name
          return method if seems_searchable?

          searchable_method_name + (multiple? ? "_in" : "_eq")
        end

        def searchable_method_name
          if searchable_has_many_through?
            "#{reflection.through_reflection.name}_#{reflection.foreign_key}"
          else
            name = method.to_s
            name.concat "_#{reflection.association_primary_key}" if reflection_searchable?
            name
          end
        end

        # Provide the AA translation to the blank input field.
        def include_blank
          I18n.t "active_admin.any" if super
        end

        def input_html_options_name
          "#{object_name}[#{input_name}]" # was "#{object_name}[#{association_primary_key}]"
        end

        # Would normally return true for has_many and HABTM, which would subsequently
        # cause the select field to be multi-select instead of a dropdown.
        def multiple_by_association?
          false
        end

        # Provides an efficient default lookup query if the attribute is a DB column.
        def collection
          if !options[:collection] && column
            pluck_column
          else
            super
          end
        rescue ActiveRecord::QueryCanceled => error
          raise ActiveRecord::QueryCanceled.new "#{error.message.strip} while querying the values for the ActiveAdmin :#{method} filter"
        end

        def pluck_column
          klass.reorder("#{method} asc").distinct.pluck method
        end

        def reflection_searchable?
          reflection && !reflection.polymorphic?
        end

      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
activeadmin-4.0.0.beta14 lib/active_admin/inputs/filters/select_input.rb
activeadmin-4.0.0.beta13 lib/active_admin/inputs/filters/select_input.rb
activeadmin-4.0.0.beta12 lib/active_admin/inputs/filters/select_input.rb
activeadmin-3.2.5 lib/active_admin/inputs/filters/select_input.rb
activeadmin-4.0.0.beta11 lib/active_admin/inputs/filters/select_input.rb
activeadmin-3.2.4 lib/active_admin/inputs/filters/select_input.rb
activeadmin-4.0.0.beta10 lib/active_admin/inputs/filters/select_input.rb
activeadmin-4.0.0.beta9 lib/active_admin/inputs/filters/select_input.rb
activeadmin-3.2.3 lib/active_admin/inputs/filters/select_input.rb
activeadmin-4.0.0.beta8 lib/active_admin/inputs/filters/select_input.rb
activeadmin-4.0.0.beta7 lib/active_admin/inputs/filters/select_input.rb
activeadmin-3.2.2 lib/active_admin/inputs/filters/select_input.rb
activeadmin-4.0.0.beta6 lib/active_admin/inputs/filters/select_input.rb
activeadmin-3.2.1 lib/active_admin/inputs/filters/select_input.rb
activeadmin-4.0.0.beta5 lib/active_admin/inputs/filters/select_input.rb
activeadmin-4.0.0.beta4 lib/active_admin/inputs/filters/select_input.rb
activeadmin-4.0.0.beta3 lib/active_admin/inputs/filters/select_input.rb
activeadmin-4.0.0.beta2 lib/active_admin/inputs/filters/select_input.rb
activeadmin-4.0.0.beta1 lib/active_admin/inputs/filters/select_input.rb
activeadmin-3.2.0 lib/active_admin/inputs/filters/select_input.rb