如何使用find_by请求自定义ActiveAdmin而不是所有操作的ID

rep*_*pié 11 ruby-on-rails ruby-on-rails-3 activeadmin

只是将ActiveAdmin添加到我的应用程序,我使用show/edit/destroy操作时出现问题,导致我的链接不指向ID而是指向用户名称(为了使用户更具可读性).

ActiveAdmin正确创建我的链接,如:

编辑链接: http://localhost:3000/admin/users/paul/edit (where paul is the user name)

在那种情况下我得到: Couldn't find User with ID=paul

当然,保罗不是id,而是用户名.

如何在我的应用程序中自定义ActiveAdmin以使用find_by_name(params [:id])来执行所有操作show/edit/delete.

在其他模型中,我得到了一个所谓的"SID",它是一个生成的盐渍ID,我也想使用find_by_sid(params [:id])以及其他模型.

非常感谢.

干杯..

小智 22

有一种更简洁的方法:

ActiveAdmin.register User do
 controller do
  defaults :finder => :find_by_slug
 end
end
Run Code Online (Sandbox Code Playgroud)


afi*_*iah 12

这将在app/admin/user.rb中完成:

ActiveAdmin.register User do
    before_filter :only => [:show, :edit, :update, :destroy] do
        @user = User.find_by_name(params[:id])
      end
end
Run Code Online (Sandbox Code Playgroud)