活跃管理员在唯一字段上创建额外的 URL

Active Admin create additional URL on unique field

我有一个对象 Foo,它有字段 id 和 token(两者都是唯一的,都有数据库索引)。我希望能够通过 url "/admin/foos/token-of-foo-1" 在 addition 中使用 url "/admin/foos/1”。我知道我需要在我的 routes.rb 中执行类似下面的操作,但我遇到了麻烦。帮忙?

ActiveAdmin.routes(self) # keep this
get 'admin/???', to: 'admin/???' # add ...something

嗯,一些想法:

#admin/foo.rb
  controller do
    def find_resource
      if params[:id].length == 16 # it's a token
         end_of_association_chain.find_by_token(params[:id])
      else
        end_of_association_chain.find(params[:id])
      end
    end
  end

出于这种目的,我使用了名为 FriendlyID 的 gem。您可以 select 哪些字段应构成 URL slug,在您的情况下,字段 token:

class Foo < ApplicationRecord
  extend FriendlyId
  friendly_id :token, use: :slugged
end

如果您对如何配置有更多疑问,请告诉我。它与 Active Admin 完美集成。