2011-10-09 17 views
10

simplemente agregando ActiveAdmin a mi aplicación, tengo un problema al usar show/edit/destroy porque mi enlace no apunta a ID sino a nombre de usuario (en orden para ser más legible para el usuario).Cómo personalizar ActiveAdmin utilizando la solicitud find_by en lugar de ID para todas las acciones

ActiveAdmin crear correctamente mi enlace como:

editar enlace: http://localhost:3000/admin/users/paul/edit (where paul is the user name)

en ese caso me sale: Couldn't find User with ID=paul

causa, por supuesto, Pablo no es el id, pero el nombre de usuario.

¿Cómo puedo personalizar ActiveAdmin para usar find_by_name (params [: id]) como en mi aplicación para toda la acción show/edit/delete.

En otro modelo recibí un llamado "SID" que es un ID salado generado y me gustaría utilizar también el find_by_sid (params [: id]) también para otros modelos.

Muchas gracias.

Saludos ..

+0

Compruebe hacia fuera esta pregunta relacionada, la respuesta aceptada es también la solución a su problema: http://stackoverflow.com/questions/7684644/activerecordreadonlyrecord- when-using-activeadmin-and-friendly-id – rdvdijk

+0

Voy a probar que esta noche, es efectivo debido al comando to_param. Te mantengo en contacto luego de un intento. –

Respuesta

12

esto va a hacer el trabajo en la aplicación/admin/user.rb:

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

Si seguido este Railscast: http://railscasts.com/episodes/63-model-name-in-url-revised y tienen rutas personalizadas, puede fijar el active_admin rutas mediante la colocación de esta en la aplicación/admin/user.rb:

before_filter :only => [:show, :edit, :update, :destroy] do 
    @user = User.find_by_slug!(params[:id]) 
end 

está muy cerca a la mostrada por afiah, sólo un poco diferente.

20

Hay una forma más limpia de hacer esto:

ActiveAdmin.register User do 
controller do 
    defaults :finder => :find_by_slug 
end 
end 
Cuestiones relacionadas