The project is in a healthy, maintained state
This gem helps disable FriendlyId''s default behavior in ActiveAdmin to allow usage of standard ID instead of friendly slugs in URLs, eliminating possible conflicts.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Runtime

>= 1.0.0
>= 5.3.0
>= 5.0.0
 Project Readme

ActiveAdmin FriendlyId Disabler

activeadmin_friendly_id_disabler is a Ruby gem designed to selectively disable the FriendlyId behavior for ActiveAdmin environments. This allows applications to use standard IDs in URLs instead of slugs, which can help avoid potential conflicts and improve compatibility with certain frameworks.

Features

  • Temporarily disables FriendlyId functionality in ActiveAdmin controllers.
  • Automatically reverts to standard ID usage within the specified context.
  • Integrated using thread-local variables to ensure thread safety.

Installation

  1. Add the gem to your Gemfile:

    gem 'activeadmin_friendly_id_disabler'
  2. Bundle Install:

    Run the following command to install the gem:

    bundle install
    
  3. Create an initializer:

    You need to configure your Rails application to use this module in ActiveAdmin controllers by creating an initializer. Create a file config/initializers/activeadmin_friendly_id_disabler.rb:

    Rails.application.config.to_prepare do
      ActiveAdmin::BaseController.include(ActiveAdmin::FriendlyIdDisabler)
    end

    This code ensures that the FriendlyId is disabled for ActiveAdmin actions after the application initializes.

Usage

Once you have installed the gem and set up the initializer, FriendlyId will be disabled in the context of ActiveAdmin controllers. This means any URLs generated will use the standard record IDs instead of slugs, preventing issues where slugs may not be necessary or desirable.

Example

Here's a simple example of a to_param override within your models:

class Post < ApplicationRecord
  extend FriendlyId
  friendly_id :title, use: :slugged
end

Configuration

By default, the gem will automatically disable FriendlyId only for the duration of an action within ActiveAdmin controllers. If you need more granular control or need to disable FriendlyId in other parts of your application, consider implementing additional custom logic.

Background and Acknowledgments

This gem was inspired by discussions around the need to selectively disable FriendlyId, as highlighted in this GitHub issue. Special thanks to Fabio Napoleoni for contributing ideas that helped shape this solution.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/gordienko/activeadmin_friendly_id_disabler.

License

The gem is available as open-source under the terms of the MIT License.