Auto_complete y Declarative_authorization

Pues aún sigo trabajando en mi tesis y me he involucrado en el mundo de Ruby on Rails, la verdad es la primera vez que posteo acerca de éste tema y si esperan algo muy técnico sera mejor que lo olviden.

No voy a negar que el desarrollo ágil de software puede facilitarnos en gran medida la vida, pero también puede complicárnosla, y eso es gracias al apoyo de la comunidad porque así como hay personas que se preocupan por que la gente aprenda hay otras que se sientes tocados por la mano de dios.

Todo esto porque algo con lo que me he topado en tutoriales, wikis y videos es que la mayoría de los desarrolladores creen que todo mundo es un experto en la materia y omiten detalles tan simples que en ocasiones pueden ser la causa de nuestros problemas, pero no lo puedes saber hasta que googleas y das con la respuesta.

En este espacio hablaré sobre un pequeño problemita que me encontré en la programación de mi sistema.

Utilizo dos plugins muy conocidos e importantes:
  • auto_complete - Sive para agregar una cajita de autocompletado de texto.
  • declarative_authorization - Usado para la autorización de usuarios basada en roles.
Para saber como implementarlos en sus proyectos les recomiendo que visiten los siguientes enlaces, ya que a mi me fueron de mucha ayuda:

Para auto_complete:

Para declarative_authorization:

Como cada uno de ellos los probé por separado, todo funcionó de maravilla hasta que los junté. Al usar declarative_authorization el auto_complete se moría. Eso me preocupo porque era una parte fundamental y muy importante en mi sistema, así que estuve googleando tres noche seguidas y nada, mis desvelos eran en vano :(

Hasta que por un golpe de suerte en Google Groups encontré un grupo llamado declarative_authorization fundando por el creador del plugin Steffen Bartsch y decidí suscribirme para hablar sobre mi problema, y lo mejor de todo es que no tardó ni un día en contestarme además de ser muy amable. La solución fue muy sencilla en realidad, solo me comentó que checara la documentación y buscara principalmente sobre la sentencia :additional_collection. La verdad esa página ya la había visitado pero sin saber por donde buscar no me funcionó, hasta que Steffen me dio la pista.

Al usar declarative_authorization es importante agregar a los controladores que lo necesiten  la siguiente instrucción:


filter_resource_access


Solo para lograr la magia de los filtros de autorización basándose en los roles definidos y los permisos que especificaste para cada uno de ellos.

Cuando se me presentó el problema Steffen respondió:

Still, I suppose that you haven't added your auto complete action to the filter_resource_access collections. Most likely, your auto complete action is an additional_collection. Please have a look at the API docs

Y aquí me llega la iluminación, después de leer de nuevo dicha documentación, pero ahora si con la idea de lo que debía hacer, todo se solucionó con un lindo y sencillo cambio:


filter_resource_access :additional_collection => [:auto_complete_for_ip_person_id]


Claro que este es mi caso, para aquellos que quieran agregarlo solo tendría que modificar la instrucción del auto_complete para adaptarlo a su sistema, y tener presente que cualquier acción nueva debe agregarse en este listado.

La solución fue realmente sencilla, tal vez por estar muy ñoña en éste tema no lo vi claro, pero nadie lo dice en ningún lado y los desarrolladores dejan a un lado a los que estamos aprendiendo, por eso creo que hay que ayudarnos entre nosotros y dar estos pequeños tips que pueden ser muy útiles :P

posted under , , |

0 comentarios:

Entrada más reciente Entrada antigua Inicio

Frase del Mes

"Sin importar el tamaño de la ciudad o pueblo en donde nacen los hombres o mujeres, ellos son finalmente del tamaño de su obra, del tamaño de su voluntad de engrandecer y enriquecer a sus hermanos"

Ignacio Allende

    Firefox: Seguro y Gratuito



    firefox download button


    We can check your plugins and stuff


    Estadísticas del Blog