Aclaremos los conceptos entre dos mundos: blank? y present? es Rails / empty? y nil? es Ruby

rubyonrails Hay momentos en los que llevamos mucho tiempo trabajando en proyectos de Ruby on Rails y perdemos la noción de la frontera ente dónde se encuentra cada cosa que utilizamos. A mí me ha pasado alguna vez, en ese caso es mejor parar y pensar por  un momento. También en alguna que otra ocasión he oído que no se entendía y/o sabía la diferencia o que siempre utilizo este método que me funciona siempre. Por esto me gustaría escribir este post para aclararlo.

Por tanto, si alguna vez has trabajado en proyectos Rails, seguramente estos métodos que voy a contar, te suenen e incluso los has utilizado en alguna ocasión, pero no te has parado a pensar el motivo de ¿porqué debo utilizarlos, qué es mejor, cuándo, dónde, alguna ventaja especial? así como algunas curiosidades que voy a explicar. Seguir leyendo

Rails 4: el utilizar o no inverse_of en mis relaciones ¿qué me implica? y ¿cómo afecta la versión de Rails 4.0 y 4.2?

rubyonrailsEn algún momento de nuestros proyectos hemos utilizado inverse_of, pero me pregunto ¿nos hemos detenido a investigar todas sus posibilidades? y ¿qué ocurre si cambio de versión en mi proyecto y no lo tengo claro? , ¿qué problemas me puedo encontrar? cuidado!, tienes que considerar ciertos aspectos de los que vamos a ver en este post. Voy a explicar el uso de inverse_of en la versión 4.0 de Rails y cómo se comporta también en estos casos con la versión Rails 4.2 :inverse_of (puedes ver este pull request). Existen varios casos en los que un inverse_of debes saber utilizarlo y yo te explico cómo puedes entenderlo y aplicarlo. Seguir leyendo

Rails 4: ¿Cómo crear un formulario y utilizar accepts_nested_attributes_for con Has-Many-Through Relations? algunos consejos para entenderlo desde cero

rubyonrailsLa idea de escribir este post, surge de la idea de comenzar a hacer piezas cortas de código para practicar más y por otro lado ver que una y otra vez, se hacen formularios de todo tipo de relaciones entre modelos, unos son básicos en cuanto a que no existe complejidad alguna, por ejemplo una has_may/belongs_to y algunos otros se van complicando y viendo ejemplos existentes en Internet e intentar recopilar una buena información sobre cómo montar un formulario con form_for cuando tengo relaciones has_many through y necesito validar los campos que pertenecen a otro modelo utilizando accepts_nested_attributes_for demás de los propios del modelo principal, me he encontrado que no disponía de uno completo desde cero, así que me he decidido a desarrollar con un ejemplo práctico paso a paso y viendo todos los detalles que necesitas para entenderlo. Por lo que he montando un proyecto con un scaffolding y básico en este sentido, para que te lo puedas descargar de mi repositorio y probarlo por ti mismo. Hazlo y cuando lo tengas en marcha en local, sigue leyendo para terminar de entenderlo.

Antes de continuar una mención personal: me gustaría agradecer en este caso a Francis (twitter ciscou) por echarme un cable en primero, confirmar que lo estaba haciendo bien (viniendo de él es algo muy fiable) y segundo en darme cuenta finalmente que lo que estaba haciendo mal era la declaración de mi strong parameters (pensando en una declaración primitiva de los atributos de entities_attributes), haciendo que el comportamiento de la aplicación sea muy diferente y confuso a lo normalmente esperado, haciéndome creer la aplicación, que la interpretación del problema por mi parte lo tenía en en los accepts_nested_attributes_for y en las relaciones (no te preocupes que ahora te lo voy a explicar paso por paso y lo vas a entender cuando termines de leer el post o puedes ir directamente al paso cuarto, si ya sabes de qué estoy hablando). En definitiva, muchas gracias Francis!!

Seguir leyendo

Less / More – Show / Hide: necesito que mi listado pueda verlo mejor el usuario de mi aplicación ¿ JTruncate JQuery? o ¿Javascript a mano?

jquery-javascript En esta ocasión me gustaría compartir una experiencia reciente en la toma de decisión técnica y cómo gestionar el ánimo en esos momentos cuando está fallando, sabes que lo has probado y te ha funcionado, pero en el momento de salir a escena salta el fallo. En la mayoría de los casos que trabajamos con plugins o gemas, no dan muchos fallos cuando lo incorporamos en proyectos, normalmente me refiero a que o va bien o va mal, pero en otras ocasiones podemos encontrarnos casos que va bien pero también falla. Esto es lo que quiero explicar para que tomes en consideración algunos parámetros más antes de decidir que ya lo tienes terminado y probada tu funcionalidad.
Seguir leyendo

Rails: Selección de menús dinámicos dentro de Active Admin

rubyonrails Actualmente estoy desarrollando un nuevo proyecto de Ruby on Rails,  versión 4 de Rails y versión 2 de Ruby. En esta ocasión quería compartir una parte que he tenido que desarrollar y en la que he encontrado mucha materia pero que no me ha ayudado en esta ocasión demasiado.

El problema

En la parte del backoffice de un portal para la que estoy trabajando para nuestro cliente, estoy utilizando Active Admin. El caso es que esta es una particularidad a la hora de hacer las cosas, en este caso tengo una serie de select independientes de País, Cuidad y Población. Cuando tienes que seleccionar cada uno de ellos individualmente los seleccionas, esto es un poco feo por decirlo de alguna manera. Lo suyo sería una vez que secciones el País, deberían seleccionarse cada una de las provincias y ciudades, en un orden alfabético, después ya si necesitas una provincia concreta, haces la sección de la provincia y automáticamente te selecciona las poblaciones. Una vez dicho esto, parece fácil el desarrollo de la solución, te pones a ver que hay de ejemplos y encuentras muchos recursos unos mejores y otros muy poco útiles. Por eso me he puesto a explicar que solución he desarrollado, por si te encuentras en esta situación tengas un punto dónde poder tener los pasos de la solución y para ello voy a explicarlo lo mejor posible. Por ejemplo he visto un railscasts sobre este tema un poco viejo aunque hay una de pago actualizada, pero lo fuentes están aquí, en stackoverflow también hay mucho pero te dejo algunos de los que he visto, como este y este otro también por si te son de utilidad.
Seguir leyendo

Rails: Si necesitas callbacks, workers y estás pensando en arrays de objetos……..aquí te dejo las claves para entenderlo!

rubyonrailsHe estado trabajando en un proyecto express dentro de ASPgems, que consiste en desarrollar una idea y el compromiso de entregarlo en producción en una semana. No sé si otras empresas disponen de esta oportunidad en la que poder participar, pero yo me apunté sin dudarlo, es una experiencia muy buena, ya que te enfrentas a situaciones que en ocasiones los tienes resueltos y este tipo de reto, hace que vuelvas a tener la alerta activa. Os voy a contar en que consiste el proyecto para poder entrar en situación y entender de lo que intento explicar y las soluciones que he aplicado.

La aplicación consiste en saber que gemas está utilizando cada proyecto que se de de alta en la aplicación, por lo que debe disponer de una interfaz de usuario, para dar de alta un nombre de proyecto, una URL del repositorio para poder saber en su Gemfile las gemas que utiliza y leer en RubyGems  más información sobre ellas.

Según estaba planteando los retos de los puntos claves de la aplicación, lo primero que debía solucionar es, cómo interactúa esa interfaz de usuario y el tiempo de proceso que se lleva el disponer de toda la información de lectura del Gemfile, así como el reto en tiempo de ir a buscar cada una de las gemas a Rubygems y conseguir la información adicional de la descripción y el resumen. Esto plantea dos tipos de accesos externos que se necesitan para obtener información, uno al repositorio del proyecto y el otro a Rubygems y eso lleva un coste que hay que medir y tratar.
Seguir leyendo