ActiveAdmin does a lot of leg work for you. Take for example the URL conventions for edit and show pages for a random model such as User:

INDEX: /admin/users

SHOW: /admin/users/1

EDIT: /admin/users/1/edit

If you want to change the behaviour so that it uses another field from your model in the URL instead (like for instance the user's first name or last name instead of the ID), I have seen lots of different ways to do this in ActiveAdmin in the past, including using FriendlyId and custom finders. But actually the simplest way is to override the to_param method on your User model:

class User < ActiveRecord::Base
  def to_param
    name.downcase
  end
end

And then ActiveAdmin will automatically use the value of to_param when generating the view/edit links on the show pages, and everywhere else in ActiveAdmin for this particular resource, producing a URL convention like this:

INDEX: /admin/users

SHOW: /admin/users/adam

EDIT: /admin/users/adam/edit

The last thing to do is customize the ActiveAdmin resource retrieval method find_resource so that it generates an ActiveRecord query that matches on name instead of ID in the ActiveAdmin file for your model, like so:

ActiveAdmin.register User do
  controller do
    def find_resource
      scoped_collection.where("lower(name) = ?", params[:id]).first
    end
  end
end

Much easier than going through the whole rigmarole of FriendlyId!

Adam