Administration
:has_many Relationships in ActiveAdmin
When I began using ActiveAdmin I discovered that there is not a lot of documentation on advanced usage such as displaying the :has_many relationships on the index and show page in the admin of the posts. I wanted to make it easy to add categories to posts and to know how posts were categorized easily.
Once the Category and Post models are created a join model also needs to exist, in this case Categorization. This part is the same as any other :has_many
, the hard part is display in the admin.
Go into the admin view for Post and add the following (other fields removed for easy viewing):
As you can see inside the tables creating a special inner table is required for best display. I add the link to the category edit in so it's easy to edit/view the category from the posts table.
To add checkboxes for category select it's as simple as adding f.input :categories, :as => :check_boxes
to your form view.
Want to figure out how to set up active admin? Read my "Lots of Love for ActiveAdmin" post. If you have questions, comment on the gist on github or find me on twitter.
ActiveAdmin is a really great simple way to implement an admin for a simple website or blog.
Lots of Love for ActiveAdmin
I have been so heavily immersed in work projects that I haven't had the time to write posts about rails - or do much of anything else.
Recently, I have been using the ActiveAdmin gem for the websites I've been building with rails. We are rebuilding our company website with rails and an ActiveAdmin backend. ActiveAdmin is awesome, the documentation could use a little love, but other than that I have no complaints about the system. I do believe everyone should build a rails administration system from scratch at least once to ensure understanding of how authentication works.
I'm going to go over some of the basics of getting up and running with ActiveAdmin and then in later posts will go into more detailed instructions on more complicated things you may want the admin to do like model relationships and integration with paperclip.
Installation
To get started add activeadmin
and meta_search
to your Gemfile
. Bundle install
and begin development! Activate the default admin user model by generating the resource: rails generate active_admin:resource AdminUser
. The default login information is admin@example.com/password.
Beginning Development
First, the admin user model must be configured. An important thing to note on installation is that all the fields for the user are visible including encrypted_password, reset_password_token, etc and if you try to update/add a user before changing the available fields you will get a "mass assignment" error. Find the admin_users.rb
in app > admin
and add the following:
You'll notice I've added extra fields to the db, namely a first_name and last_name to create full_name. This file changes the main views in the administration interface — the index view (table of users), the show view (each user's settings), and the form (updating/adding users to the admin panel).
Be sure to update your model to include validations, messages and relationships.
Adding new models is as simple as generating a model and a resource. If you want to create a model that isn't updated through the ActiveAdmin interface, create a has_many
join table model (ex, categorizations), but leave out the resource generation.
And that's all you need to get started, very simple gem to use. Although I could get a lot more in-depth about the features of ActiveAdmin I'm going to pause here. I encourage you to play around with it, the ease of use makes development even more fun. It's great to not have to worry about designing your admin interface for fast development.