Class: ActiveAdmin::FilterFormBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/active_admin/mongoid/filter_form_builder.rb

Instance Method Summary collapse

Instance Method Details

#column_for(method) ⇒ Object



24
25
26
# File 'lib/active_admin/mongoid/filter_form_builder.rb', line 24

def column_for(method)
  @object.klass.fields[method.to_s] if @object.klass.respond_to?(:fields)
end

#default_input_type(method, options = {}) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/active_admin/mongoid/filter_form_builder.rb', line 2

def default_input_type(method, options = {})
  if column = column_for(method)
    case column.type.name.downcase.to_sym
    when :date, :datetime, :time;   :date_range
    when :string, :text, :objectl;  :string
    when :float, :decimal;          :numeric
    when :integer
      return :select if reflection_for(method.to_s.gsub('_id','').to_sym)
      return :numeric
    end
  elsif is_association?(method)
    return :select
  else
    # dirty but allows to create filters for hashes
    return :string
  end
end

#is_association?(method) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/active_admin/mongoid/filter_form_builder.rb', line 20

def is_association?(method)
  @object.klass.associations.to_a.map(&:first).include?(method.to_s)
end

#reflection_for(method) ⇒ Object



28
29
30
# File 'lib/active_admin/mongoid/filter_form_builder.rb', line 28

def reflection_for(method)
  @object.klass.reflect_on_association(method) if @object.klass.respond_to?(:reflect_on_association)
end