[QuickTip] Atributos predeterminados en Mongoid Rails


Antes que nada una disculpa por la inactividad en el blog y las redes sociales, hemos estado demasiado ocupados (sobre todo yo) Pero acá seguimos. Aquí un quicktip:

Fíjense que estoy construyendo una plataforma web para una agencia de viajes y estamos manejando algo así como un "monedero electrónico" el cual lo que permite es que cada que un usuario de la aplicación compre algo ésta le regrese en "puntos" de un 5% al 100% del total de su compra y más tarde los pueda usar para comprar otras cosas dentro de la misma plataforma. Hacer esto requiere inicializar un usuario con un monedero electrónico en ceros, pero al hacerlo con un callback el resultado que obtuve fue un "true" en lugar de un cero, cosa que no servía de nada pues el usuario debe ver cómo su monedero empieza en ceros y se le va sumando dinero poco a poco (hay una vista para eso, y si en el programa decía "true" el usuario no entendería); Para lograr el resultado esperado, simplemente tuve que cambiar el approach de callback por uno más sencillo: Atributos predeterminados. Si usas Mongoid como tu ORM, entonces ésta es la manera correcta de hacerlo. En el modelo:


Simplemente ponemos una coma después de declarar el atributo y con la declaración del "default" y un hash con el valor que queremos que sea el predeterminado lograremos nuestro cometido. En mi ejemplo estoy siendo excesivamente "verboso" pero espero que para fines del post se entienda porqué. Lo mismo daba poner "0" a todo ese barullo en mi hash, pero mejor explícito que "abierto a la interpretación". Establecer atributos predeterminados como lo muestro en mi línea de código allá arriba permitirá que dicho atributo se "setée" al momento de la creación del objeto, de manera que cada objeto nuevo de un modelo determinado que incluya este tipo de setup se inicializará con el valor deseado predeterminado automáticamente en la base de datos al momento de su creación.