MVC
Es un patrón de la arquitectura de software, que separa los datos y la lógica de negocio de una aplicación.
- Modelo: manejo de la base de datos y la lógica de negocios
- Controlador: manejo de la interfaz del usuario y aplicación
- Vistas: manejo de objeto de interfaz gráfica de usuario y presentación
Separación de acuerdo al resultado de la peticiones del usuario
1.- El buscador del cliente que manda una petición al controlador en el servidor
2.- El controlador recupera los datos los necesita de un modelo en orden para responder la solicitud
3.- El controlador le da los datos recuperados a las vistas
4.- Las vistas redirige y devuelve la información al cliente.
La separación en estos 3 distintos componentes es una buena idea por un número de razones, incluyendo:
Mejora la escalabilidad
Por ejemplo si tu aplicacion comienza a experimentar problemas de rendimiento por que el acceso es lento, puedes actualizar el hardware que corre la base de datos sin afectar otros componentes.Fácil mantenimiento
Como el componente tiene un bajo dependecia uno del otro, hacer cambios de uno no afecta al otro.Reutilización
Un modelo puede ser usado por múltiples vistas
MVC rails
Rails promueve el concepto de los modelos, vistas y controladores que deben estar separados por el historial de código por cada elemento como archivos independientes en directorios.
Como se puede ver, cada componente del la arquitectura modelo-vista-controlador ha sido puesto dentro en la carpeta app(carpeta de la aplicación) el modelo, vista y controlador con sus respectivas carpetas.
Módulo de ActiveRecord
Es el encargado del manejo de la comunicacción lógica y de la base de datos.
- Establece una conexión con el servidor de la base de datos
- Recupera datos de la tabla
- Historial de datos en la base de datos
Abstracción de base de datos
Se puede adaptar la base de datos para que se comunique con los diferentes tipos de manejadores como SQLite, MySQL, y posgresql.
Hay un largo numero de adaptadores que están disponibles para la base de datos como Oracle, MongoDB y Microsoft SQL server.
Tablas de la base de datos
Las tablas son contenedor de nuestra información que se guardan en las base de datos de manera estructurada, están compuestas por filas y columnas. Las lineas mapean los objetos individuales y las columnas mapean atributos de esos objetos. La colección de todas la tablas se guardan en una base de datos, y la relación entre esas tablas es llamada squema de base de datos.
Usando la consola de rails
Nos mostrara este código >> símbolo de sistema que esta listo de aceptar comandos.
Guardar un objeto
Podemos guardar un objeto siempre cuando tengamos la instancia del objeto en una variable para poderle dar .save
ejemplo
@objeto = nombredelobjeto.new
@objeto.save <–––– de esta manera podemos guardar su informacion y pueda esatar disponible para su manipulación
story = story.new
story.save
Definir relación entre objetos
relación uno a uno
relación uno a muchos
relación muchos a muchos
En rails es:
hasone
hasmany
belongsto
hasandbelongsto_many
ActionPack Library
El nombre de esta librería que contiene la vista y el controlador es parte de la arquitectura de MVC. A diferencia del ActiveRecord modular, estos modulos son mas intuitivos nombre: ActionController
y ActionView.
ActionController(El controlador)
El controlador maneja la aplicación lógica del programa, actúan como union entre la aplicación de datos, la capa de presentación, y navegador web. En este rol, un controlador realiza un número de tareas incluyendo:
- Decide como manejar una petición en particular
- Recupera información del modelo que se lo pasa a la vista
- Reúne información de la petición del explorador y usa para crear, actualizar datos en el modelo o igual llamado CRUD.
ActionView(La vista)
Unos de los principales de MVC es esta vista debe contener solo la presentación lógica.
Se encuentra en app/views
Una vista actualmente no necesita contener culaquier codigo de ruby en asboluto. Un html puede tener un bombinacion de html y ruby, haciendo que lapagina sea mas dinamica. El codigo de ruby es embendado en html y usando embendado de ruby (Erb) sintaxis.
Estos son la forma de meter codigo ruby en el hmtl
<%= … %>
Ejecución de funciones
<% … %>
Impresión