Изучение ActiveAdmin: максимизация функциональности с помощью default_scope

ActiveAdmin — это популярный драгоценный камень Ruby on Rails, который упрощает процесс создания мощных интерфейсов администрирования для веб-приложений. Одной из его полезных функций является default_scope, которая позволяет вам определить набор условий по умолчанию для всех запросов в ресурсе ActiveAdmin. В этой статье мы рассмотрим различные методы и примеры кода для использования default_scopeв ActiveAdmin.

  1. Добавление default_scope к ресурсу ActiveAdmin:

    ActiveAdmin.register User do
    default_scope { where(active: true) }
    end

    В этом примере мы добавляем область по умолчанию к ресурсу User, который фильтрует все запросы и возвращает только активных пользователей.

  2. Объединение default_scope с другими областями:

    ActiveAdmin.register Post do
    default_scope { published }
    scope :published
    scope :draft
    end

    Здесь мы используем default_scopeдля получения только опубликованных сообщений. Кроме того, мы определяем две пользовательские области: publishedи draft, чтобы дополнительно фильтровать сообщения на основе их статуса публикации.

  3. Динамическое применение условий к default_scope:

    ActiveAdmin.register Product do
    default_scope do
    if current_admin_user.admin?
      all
    else
      where(user_id: current_admin_user.id)
    end
    end
    end

    В этом примере мы условно применяем область действия по умолчанию в зависимости от роли текущего пользователя-администратора, вошедшего в систему. Если пользователь является администратором, загружаются все продукты. В противном случае возвращаются только продукты, связанные с пользователем.

  4. Объединение нескольких условий в default_scope:

    ActiveAdmin.register Order do
    default_scope { where(status: 'completed').where('created_at >= ?', 1.month.ago) }
    end

    Здесь мы объединяем несколько условий в пределах области действия по умолчанию ресурса Order. Будут получены только завершенные заказы, созданные в течение последнего месяца.

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

Реализуя эти методы, вы можете оптимизировать запросы и представление данных в ActiveAdmin, что делает администрирование более рациональным и удобным для пользователя.