module ActiveAdmin::Filters::FormtasticAddons

Public Instance Methods

column() click to toggle source
# File lib/active_admin/filters/formtastic_addons.rb, line 26
def column
  column_for method
end
column_for(method) click to toggle source
# File lib/active_admin/filters/formtastic_addons.rb, line 22
def column_for(method)
  klass.columns_hash[method.to_s] if klass.respond_to? :columns_hash
end
has_predicate?() click to toggle source

If the given method has a predicate (like _eq or _lteq), it's pretty likely we're dealing with a valid search method.

# File lib/active_admin/filters/formtastic_addons.rb, line 62
def has_predicate?
  !!Ransack::Predicate.detect_from_string(method.to_s)
end
humanized_method_name() click to toggle source

The below are Formtastic method overrides that jump inside of the Ransack search object to get at the object being searched upon.

# File lib/active_admin/filters/formtastic_addons.rb, line 10
def humanized_method_name
  if klass.respond_to?(:human_attribute_name)
    klass.human_attribute_name(method)
  else
    method.to_s.public_send(builder.label_str_method)
  end
end
klass() click to toggle source

The resource class, unwrapped from Ransack

# File lib/active_admin/filters/formtastic_addons.rb, line 35
def klass
  @object.object.klass
end
polymorphic_foreign_type?(method) click to toggle source
# File lib/active_admin/filters/formtastic_addons.rb, line 39
def polymorphic_foreign_type?(method)
  klass.reflect_on_all_associations.select{ |r| r.macro == :belongs_to && r.options[:polymorphic] }
    .map(&:foreign_type).include? method.to_s
end
ransacker?() click to toggle source

Ransack lets you define custom search methods, called ransackers.

# File lib/active_admin/filters/formtastic_addons.rb, line 67
def ransacker?
  klass._ransackers.key? method.to_s
end
reflection_for(method) click to toggle source
# File lib/active_admin/filters/formtastic_addons.rb, line 18
def reflection_for(method)
  klass.reflect_on_association(method) if klass.respond_to? :reflect_on_association
end
scope?() click to toggle source

Ransack supports exposing selected scopes on your model for advanced searches.

# File lib/active_admin/filters/formtastic_addons.rb, line 72
def scope?
  context = Ransack::Context.for klass
  context.respond_to?(:ransackable_scope?) && context.ransackable_scope?(method.to_s, klass)
end
searchable_has_many_through?() click to toggle source

These help figure out whether the given method or association will be recognized by Ransack.

# File lib/active_admin/filters/formtastic_addons.rb, line 48
def searchable_has_many_through?
  if reflection && reflection.options[:through]
    reflection.through_reflection.klass.ransackable_attributes.include? reflection.foreign_key
  else
    false
  end
end
seems_searchable?() click to toggle source
# File lib/active_admin/filters/formtastic_addons.rb, line 56
def seems_searchable?
  has_predicate? || scope?
end