Search code examples
ruby-on-railsrubyruby-on-rails-4ruby-on-rails-5activeadmin

ActiveAdmin with friendly id


I am using friendly_id in my rails 4 application with slug. Now I am using active_admin gem.

Problem:

When I click on show link from active admin for Group resource, It is throwing the following exception:

ActiveRecord::RecordNotFound at /admin/groups/username20-s-group-1

I guess, I need to override some of the active_admin default functions?


Solution

  • There are cases, when application has quit a few resources, hence in order to keep it DRY there is a nice solution requiring few lines of code for whole application - simply override activeadmin's resource controller.

    Create config/initializers/active_admin_monkey_patching.rb file with the following content:

    ActiveAdmin::ResourceController.class_eval do
      def find_resource
        finder = resource_class.is_a?(FriendlyId) ? :slug : :id
        scoped_collection.find_by(finder => params[:id])
      end
    end
    

    Do not forget to restart the server.