По мере роста нашего приложения иногда нам приходится реорганизовывать и наши административные интерфейсы.

Недавно я использовал Active Admin и столкнулся с частным случаем, когда страница индекса для определенного ресурса загружалась очень медленно. После попыток поиска вверх и вниз, пытаясь выяснить, в чем проблема, я наконец обнаружил, что проблема связана с фильтром.

Чтобы объяснить это немного более ясно, давайте предположим, что у нас есть конкретный случай, когда у вас есть проект, в котором клиент имеет много транзакций, а у нас есть сотни тысяч сделок.

Теперь, из-за того, что у нас есть клиент с таким количеством транзакций, получение всех этих записей каждый раз, когда вы посещаете индексную страницу клиента, занимает много времени. На странице индекса у вас может быть много фильтров, где фильтр можно использовать для фильтрации клиентов на основе транзакций.

Из-за того, что у нас так много записей, мы можем просто скрыть этот фильтр, чтобы больше не пытаться фильтровать клиентов на основе транзакций. Для этого мы можем просто написать:

Теперь нам больше не нужно так долго ждать загрузки страницы клиентов.

Вы по-прежнему можете фильтровать транзакции для разных клиентов, установив фильтр client на странице индекса транзакций.

У вас значительно меньше клиентов, и транзакции результатов также разбиваются на страницы, так что это все равно должно дать вам способ фильтрации результатов без необходимости идти на компромисс с потерей этого фильтра.

Надеюсь, это поможет.