フレンドリー ID を持つ ActiveAdmin
概要
私はRails 4アプリケーションでslugを使用してfriend_idを使用しています。現在、active_admin gem を使用しています。
問題:
グループ リソースのアクティブな管理者からリンクの表示をクリックすると、次の例外がスローされます。
ActiveRecord::RecordNotFound at /admin/groups/username20-s-group-1
どうやら、active_admin のデフォルト関数の一部をオーバーライドする必要があるのでしょうか?
解決策
アプリケーションがいくつかのリソースを終了する場合があります。そのため、アプリケーションを DRY に保つために、アプリケーション全体に数行のコードを必要とする優れたソリューションがあります。単純に activeadmin のリソース コントローラーをオーバーライドするだけです。
次の内容を含む config/initializers/active_admin_monkey_patching.rb ファイルを作成します。
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
サーバーを再起動することを忘れないでください。