L'arquitectura MVC (Model-View-Controller) és un patró de disseny àmpliament utilitzat en el desenvolupament d'aplicacions web, especialment en Ruby on Rails. Aquest patró separa l'aplicació en tres components interconnectats, permetent una millor organització del codi i una major facilitat de manteniment.
Components de l'Arquitectura MVC
- Model
El Model representa la lògica de negoci i la gestió de dades de l'aplicació. És responsable de:
- Definir les estructures de dades.
- Gestionar la persistència de dades (interactuar amb la base de dades).
- Implementar la lògica de negoci.
Exemple de Model en Ruby on Rails:
class Article < ApplicationRecord validates :title, presence: true validates :body, presence: true end
En aquest exemple, el model Article
defineix una estructura de dades per a articles i valida que els camps title
i body
estiguin presents.
- Vista
La Vista és responsable de la presentació de la informació a l'usuari. Genera la interfície d'usuari i mostra les dades proporcionades pel Model.
Exemple de Vista en Ruby on Rails (ERB):
<!-- app/views/articles/show.html.erb --> <h1><%= @article.title %></h1> <p><%= @article.body %></p>
Aquest exemple mostra com es pot utilitzar ERB (Embedded Ruby) per incrustar codi Ruby dins d'un fitxer HTML per mostrar les dades d'un article.
- Controlador
El Controlador actua com a intermediari entre el Model i la Vista. Gestiona les sol·licituds de l'usuari, interactua amb el Model per obtenir dades i selecciona la Vista adequada per mostrar la resposta.
Exemple de Controlador en Ruby on Rails:
class ArticlesController < ApplicationController def show @article = Article.find(params[:id]) end end
En aquest exemple, el controlador ArticlesController
té una acció show
que cerca un article per ID i el passa a la Vista.
Flux de Treball en MVC
- Sol·licitud de l'Usuari: L'usuari fa una sol·licitud (per exemple, accedir a una pàgina web).
- Controlador: El controlador rep la sol·licitud, processa qualsevol lògica necessària i interactua amb el Model per obtenir les dades.
- Model: El model gestiona la lògica de negoci i la persistència de dades, retornant les dades necessàries al controlador.
- Vista: El controlador passa les dades a la Vista, que genera la interfície d'usuari i mostra la informació a l'usuari.
Exercici Pràctic
Objectiu
Crear una aplicació simple en Rails que mostri una llista d'articles i permeti veure els detalls de cada article.
Passos
-
Generar el Model:
rails generate model Article title:string body:text rails db:migrate
-
Definir el Controlador:
rails generate controller Articles
-
Afegir Accions al Controlador:
# app/controllers/articles_controller.rb class ArticlesController < ApplicationController def index @articles = Article.all end def show @article = Article.find(params[:id]) end end
-
Crear Vistes:
<!-- app/views/articles/index.html.erb --> <h1>Articles</h1> <ul> <% @articles.each do |article| %> <li> <%= link_to article.title, article_path(article) %> </li> <% end %> </ul>
<!-- app/views/articles/show.html.erb --> <h1><%= @article.title %></h1> <p><%= @article.body %></p>
-
Configurar Rutes:
# config/routes.rb Rails.application.routes.draw do resources :articles, only: [:index, :show] end
Solució
Després de seguir els passos anteriors, hauríeu de tenir una aplicació Rails que mostra una llista d'articles i permet veure els detalls de cada article.
Resum
L'arquitectura MVC és un patró de disseny que separa una aplicació en tres components: Model, Vista i Controlador. Aquesta separació facilita la gestió del codi i la seva mantenibilitat. En aquest mòdul, hem après com implementar aquest patró en una aplicació Rails simple, creant models, controladors i vistes per gestionar i mostrar dades.
En el següent tema, explorarem les rutes en Rails, que són essencials per definir com les sol·licituds de l'usuari es mapegen a les accions del controlador.
Curs de Programació en Ruby
Mòdul 1: Introducció a Ruby
Mòdul 2: Conceptes Bàsics de Ruby
Mòdul 3: Treballant amb Col·leccions
Mòdul 4: Programació Orientada a Objectes en Ruby
- Classes i Objectes
- Variables i Mètodes d'Instància
- Variables i Mètodes de Classe
- Herència
- Mòduls i Mixins
Mòdul 5: Conceptes Avançats de Ruby
- Blocs, Procs i Lambdas
- Metaprogramació
- Gestió d'Excepcions
- Entrada/Sortida de Fitxers
- Expressions Regulars
Mòdul 6: Introducció a Ruby on Rails
- Què és Ruby on Rails?
- Configuració de l'Entorn Rails
- Creació d'una Aplicació Simple en Rails
- Arquitectura MVC
- Rutes
Mòdul 7: Proves en Ruby
- Introducció a les Proves
- Proves Unitàries amb Minitest
- Desenvolupament Basat en Comportament amb RSpec
- Mocking i Stubbing
Mòdul 8: Millors Pràctiques en Ruby
- Estil de Codi i Convencions
- Refactorització
- Optimització del Rendiment
- Millors Pràctiques de Seguretat