2013-10-15 43 views
1

帕拉姆我用:防守与Active管理员

def to_param 
    user_name 
end 

,并在我的主动管理user.rb

ActiveAdmin.register User do 
    index do 
     column :id 
     column :email 
     column :user_name 
     column :created_at 
     default_actions 
    end 
end 

这当然给了我一个Couldn't find User with id=testuser

我怎么可以指定Active Admin正确使用它?

编辑1:与它下面的答案工作,但高清到PARAM得到的覆盖上的所有应用程序..

+1

http://stackoverflow.com/questions/7684644/activerecordreadonlyrecord-when-using-activeadmin-and-friendly-id – usha

+0

甜,工作。 。心灵回答,让我可以upvote? –

回答

2

这将完成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 
2

覆盖的to_param实施ActiveAdmin

ActiveAdmin.register Foobar do 
    before_filter do 
    Foobar.class_eval do 
     def to_param 
     id.to_s 
     end 
    end 
    end 
end 

参考this SO post更多信息/备用解决方案

+0

嘿vimsha,虽然它与积极管理,INAPP所有def def params被覆盖到:id和没有作品...有没有一个可行的解决方案呢? –

1

你想覆盖缺省取景器:

controller do 
    defaults :finder => :find_by_user_name 
end 
+0

这确实是最好的答案 –