3. Componentes de arquitectura - MartinCarniello/Universitate GitHub Wiki
Componentes que hacen a la aplicación
Utilizamos HAML como preprocesador de HTML. Nos ayuda a escribir las vistas de manera más limpia y descriptiva, luego desde el servidor lo termina procesando a HTML y es lo que devuelve al cliente.
Javascript con JQuery para lógica de cliente.
js.erb para generar el asincronismo. Es código Ruby embebido en Javascript, desde el servidor lo termina procesando a Javascript y lo devuelve al cliente luego de una petición por ajax.
Las vistas están compuestas por un HTML padre y demás HTML’s parciales que se van renderizando desde el servidor para generar uno único que es el que se envía al cliente.
Utilizamos objetos decoradores para gran parte de los modelos que tiene la aplicación, con el fin de añadir lógica de como tienen que ser renderizados en las vistas (lógica que sólo utilizamos en las mismas). De esta manera le quitamos responsabilidad al objeto de como debe ser mostrado en pantalla.
NO utilizamos servicios para orquestar y generar transacciones explícitas entre los distintos modelos. Esta transaccionalidad entre los mismos, en Rails se maneja de otra manera. Esto sucede dentro de los mismos modelos al estilo de callbacks. Estos callbacks se triggerean dependiendo de distintos eventos que se pueden ir encadenando entre los modelos involucrados en la inserción, actualización o eliminación de un registro en la BD.
Quedando de esta manera toda la lógica dentro de los mismos modelos, sin necesidad de tener que crear un servicio y hacer una transacción explícita para orquestar las distintas llamadas entre los modelos involucrados.