Я пытаюсь добавить настраиваемый фильтр в ActiveAdmin, который в настоящее время работает на Ransack. К сожалению, ransacker
не документируется вообще, и из нескольких ресурсов в сети я объединил следующее (в модели User):
ransacker :full_text, formatter: ->(search) {
ids = User.search_in_all_translated(search).map(&:id)
ids = ids.any? ? ids : nil
} do |parent|
parent.table[:id]
end
Метод search_in_all_translated
возвращает массив пользователей, которые соответствуют строке поиска по всем переведенным атрибутам.
На странице администратора определяется следующий фильтр:
filter :full_text_in,
label: 'full text search',
as: :string
Сам фильтр работает, поэтому фильтрация tom
будет отображать все соответствующие записи. Однако значение входного сигнала фильтра переключается на ["tom"]
.
Перед применением фильтра:
После применения фильтра:
Любые идеи, как это исправить?