Sha256: 99b22bd40e0a36214e71ecf3274aed282d2cc0c41b577fd72bbf6cbb48e84b67

Contents?: true

Size: 1.33 KB

Versions: 5

Compression:

Stored size: 1.33 KB

Contents

module ActiveAdmin
  module Inputs
    class FilterSelectInput < ::Formtastic::Inputs::SelectInput
      include FilterBase

      def input_name
        return method if seems_searchable?

        searchable_method_name.concat 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 '_id' if reflection
          name
        end
      end

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

      # was "#{object_name}[#{association_primary_key}]"
      def input_html_options_name
        "#{object_name}[#{input_name}]"
      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
      end

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

    end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
active_administration-0.0.3 lib/active_admin/inputs/filter_select_input.rb
activeadministration-0.0.2 lib/active_admin/inputs/filter_select_input.rb
active_administration-0.0.2 lib/active_admin/inputs/filter_select_input.rb
activeadministration-0.0.1 lib/active_admin/inputs/filter_select_input.rb
active_administration-0.0.1 lib/active_admin/inputs/filter_select_input.rb