Setting up Our Rails Example
For the example, we’re going to make a simple stock trading app. We’ll have three models: Users, Portfolios and Stocks. The user can have many trading portfolios as well as many stocks through the portfolios. The portfolios belong to the users, the stocks belong to the portfolios.
rails new active_admin_example
rails g model User
rails g model Portfolio
rails g model Stock
Our models will look like this:
Let’s now create some simple seed data so we’ve got something to show on our admin page.
Setting Up Active Admin
To add Active Admin to your project add the following to your Gemfile. Devise is a Gem that handles authentication for Rails. If you’re incorporating Active Admin to an existing project there’s a good chance you already have Devise installed.
Now all we need to do to incorporate Active Admin is to use our ever-faithful generator as follows. This will create an AdminUser class to use with Devise.
rails g active_admin:install
Now all we’ve got to do is register our models with Active Admin. The general syntax is
rails generate active_admin:resource [Model Name].
rails generate active_admin:resource User
rails generate active_admin:resource Portfolio
rails generate active_admin:resource Stock
After all the generation is complete we’ll have an
admin folder with files for our generated models as well as for the
dashboard. More on
dashboard in a minute.
We’re 3 lines away from getting Active Admin up and running. We first create our migration. There will be 2 Active Admin migrations. One for Devise for handling Admin Users and another for Active Admin
Comments provides the incredibly useful ability to add notes about any entry in any of your linked models. This is really powerful as it allows administrators to track issues.
It’s also useful to note that the following code is auto-generated within the seeds file. This gives default admin login with the shown credentials. Feel free to change the email and password before seeding. You can also update this later within the Active Admin interface.
After starting up our server go to
http://localhost:3000/admin or tweak the URL if you’re running on a different port.
After logging in with the email and password from above we get the following interface. Easy as pie. We can now inspect any of our data, filter the displayed results and even export to CSV without having to write up any further code. There’s routes on the navigation bar for all of our linked models. I don’t know about you but I think that’s amazing!
The dashboard page is blank to begin with but you can create useful custom statistics, graphs and tables that provide a high-level overview of your data.
Active Admin allows you to create a range of different view components that you can add to your
dashboard. I’ll keep it simple and add a component to the dashboard called a
panel is a component that takes up all available horizontal space and takes a title and a hash of attributes as arguments. If a sidebar is present, a panel will take up the remaining space.
Here’s a simple, contrived example, for a panel that shows all portfolio titles within the database. Add the following code to
Here you can see our panel showing up on the Dashboard.
Active Admin can scaffold an incredibly powerful, production-ready admin portal by barely lifting a finger. An incredibly powerful addition to any Rails programmer’s toolbelt.