Active Admin allows me to define filters that are displayed on the index page like so:
ActiveAdmin.register Promo do
filter :name
filter :address
filt
To use a custom filter, you can create a scope function and add it as search_methods in the model.
For example, on my User model:
search_methods :role_eq
scope :role_eq, -> (role) { where("? LIKE ANY(roles)", role) }
Then in users.rb, I can use my scope as a custom filter:
filter :role, label: "Roles", as: :select, collection: %w[ student teacher parent ]