Administrate
Thoughtbot's extensible admin dashboard generator for Rails — creates CRUD admin interfaces from model definitions with minimal configuration. Administrate features: Dashboard classes defining displayed fields, custom field types (BelongsToField, HasManyField, DateTimeField, UrlField), SHOW_PAGE_ATTRIBUTES / INDEX_PAGE_ATTRIBUTES / FORM_ATTRIBUTES arrays, search across configured attributes, sortable columns, pagination via Kaminari, filtering, custom action controllers inheriting from Admin::ApplicationController, and generator for dashboard files (rails generate administrate:dashboard Agent). Generates real Rails controllers and views (not DSL magic) — fully overridable. Less magical but more maintainable than ActiveAdmin.
Score Breakdown
⚙ Agent Friendliness
🔒 Security
CRITICAL: Administrate has no built-in authentication — must implement authenticate_admin! before production. Admin panel exposes all model data including agent API keys, passwords, and sensitive fields; carefully configure ATTRIBUTE_TYPES to exclude sensitive agent attributes. Add authorization (Pundit/CanCanCan) for role-based admin access.
⚡ Reliability
Best When
Your Rails agent app needs a simple, customizable admin interface for managing records — Administrate generates real overridable Rails files instead of magical DSL, making it easier to customize agent-specific admin behavior.
Avoid When
You need complex admin workflows, role-based admin views, or heavy customization that requires fighting Administrate's conventions (use ActiveAdmin or Avo instead).
Use Cases
- • Agent catalog admin interface — rails generate administrate:dashboard Agent creates AgentDashboard with ATTRIBUTE_TYPES defining fields; Admin::AgentsController inherits from Administrate::ApplicationController; instant CRUD for agent management without building admin views from scratch
- • Custom agent field display — class AgentDashboard < Administrate::BaseDashboard { ATTRIBUTE_TYPES = { status: Field::Select.with_options(choices: %w[active pending]) } } displays custom agent status selector in admin form
- • Agent admin with association display — HasManyField for agent tasks, BelongsToField for agent owner; relationship navigation built-in; admin can browse from agent to related tasks with generated link
- • Custom agent admin actions — override AdminController#index to scope agents by current admin's organization; add custom action routes for agent activation/deactivation beyond standard CRUD in agents_controller.rb
- • Agent search and filter — SEARCH_ATTRIBUTES = [:name, :description] enables agent search box; administrate handles LIKE query generation; admin filters agent list by name substring without custom code
Not For
- • Complex multi-model workflows — Administrate is CRUD-focused; for complex admin workflows, batch operations, and custom dashboards use ActiveAdmin with Arbre DSL or Avo
- • Non-Rails projects — Administrate is Rails/ActiveRecord-specific; for non-Rails admin use Forest Admin or custom admin panel
- • Public-facing pages — Administrate generates admin-only interfaces; for public-facing data tables use standard Rails views or Hotwire
Interface
Authentication
Administrate generates admin routes but no auth by default. Override authenticate_admin! in Admin::ApplicationController to add Devise authentication or other auth. Admin routes must be secured before production deployment.
Pricing
Administrate is MIT licensed, maintained by Thoughtbot. Free for all use.
Agent Metadata
Known Gotchas
- ⚠ Authentication not included — administrate mounts at /admin with no authentication by default; production agent admin without auth is an open admin panel; override authenticate_admin! in Admin::ApplicationController immediately after setup; many teams discover this after accidentally deploying open admin
- ⚠ Dashboard class must be in app/dashboards/ — AgentDashboard at app/dashboards/agent_dashboard.rb; placing in app/admin/ or other directories causes NameError when admin routes load; generated path matches convention; custom dashboard location requires Administrate.routes configuration
- ⚠ ATTRIBUTE_TYPES must match model attributes exactly — key names in ATTRIBUTE_TYPES hash must match model attribute/method names; typos cause ArgumentError with field type instantiation; agent models with computed properties need def method defined alongside ATTRIBUTE_TYPES entry
- ⚠ HasManyField causes N+1 on index page — displaying HasManyField(AgentTask) on index page triggers one query per agent row; override index in Admin::AgentsController with @resources = @resources.includes(:tasks) to preload; large agent lists with HasManyField have severe performance degradation without explicit includes
- ⚠ Search only covers SEARCH_ATTRIBUTES columns — SEARCH_ATTRIBUTES = [:name] searches only name; agent admins expecting search to cover all visible columns get no results for description search; explicitly list all searchable agent attributes in SEARCH_ATTRIBUTES array
- ⚠ Administrate version compatibility with Rails — Administrate 0.20+ requires Rails 6.1+; older agent Rails apps need older Administrate version; check compatibility matrix before upgrading; some Rails 7.x features (turbo, importmap) require administrate-field additions for rich admin UI
Alternatives
Full Evaluation Report
Detailed scoring breakdown, competitive positioning, security analysis, and improvement recommendations for Administrate.
Scores are editorial opinions as of 2026-03-06.