ActiveAdmin — это популярный драгоценный камень Ruby on Rails, который упрощает процесс создания мощных интерфейсов администрирования для веб-приложений. Одной из его полезных функций является default_scope, которая позволяет вам определить набор условий по умолчанию для всех запросов в ресурсе ActiveAdmin. В этой статье мы рассмотрим различные методы и примеры кода для использования default_scopeв ActiveAdmin.
-
Добавление default_scope к ресурсу ActiveAdmin:
ActiveAdmin.register User do default_scope { where(active: true) } endВ этом примере мы добавляем область по умолчанию к ресурсу
User, который фильтрует все запросы и возвращает только активных пользователей. -
Объединение default_scope с другими областями:
ActiveAdmin.register Post do default_scope { published } scope :published scope :draft endЗдесь мы используем
default_scopeдля получения только опубликованных сообщений. Кроме того, мы определяем две пользовательские области:publishedиdraft, чтобы дополнительно фильтровать сообщения на основе их статуса публикации. -
Динамическое применение условий к 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В этом примере мы условно применяем область действия по умолчанию в зависимости от роли текущего пользователя-администратора, вошедшего в систему. Если пользователь является администратором, загружаются все продукты. В противном случае возвращаются только продукты, связанные с пользователем.
-
Объединение нескольких условий в 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, что делает администрирование более рациональным и удобным для пользователя.