Visão geral do Rails MVC
O curso apresenta o Model-View-Controller como padrão de design, desde a criação na Xerox PARC em 1979 e o uso no Smalltalk-80. Mostra o papel de cada parte: o Model guarda dados e regras de negócio, a View cuida da apresentação e o Controller coordena os dois. As aulas explicam como a separação de responsabilidades ajuda nos testes e nas mudanças. Também comparam model gordo e service objects e tratam de controller gordo, model anêmico e lógica duplicada. Uma funcionalidade de publicação junta as três camadas.
O que você vai aprender
- ✓A origem do MVC e os três papéis que ele define
- ✓Que código fica no Model, na View e no Controller
- ✓Por que um formulário renderizado de novo precisa de status: :unprocessable_content com o Turbo
- ✓A troca entre model gordo e service objects
- ✓Como a separação de responsabilidades ajuda nos testes e permite várias Views para um Model
- ✓Como reconhecer controller gordo, model anêmico e lógica duplicada
O que é MVC?
A web: requisição-resposta percorreu todo o caminho de uma requisição Rails: Puma, middleware, router, controller, model, view. Este curso olha para algo mais estreito: o MVC em si, como padrão de design, e não como encanamento do Rails.
Ler a aula completa grátis →Currículo
7 aulasO que é MVC?
Mostra a origem do MVC na Xerox PARC em 1979 e define o trabalho de Model, View e Controller.
O model possui dados e regras
Mostra que validações e fatos derivados como published? ficam no Model, e que gerar HTML não fica.
A view possui apresentação, só isso
Explica que a View exibe dados preparados com if e each, sem recalcular regras de negócio no template.
O controller é um guarda de trânsito
Trata do Controller como coordenador, do status 4xx exigido pelo Turbo e de model gordo contra service objects.
Por que separação de responsabilidades importa
Mostra como a separação permite testar o Model sozinho, mudar camadas de forma independente e ter várias Views.
Erros comuns de MVC
Descreve o controller gordo, o model anêmico e um mesmo fato de negócio duplicado em várias camadas.
Juntando tudo: lendo uma funcionalidade de ponta a ponta
Lê uma funcionalidade de publicação no Model, Controller e View, incluindo o motivo de usar update! e não update.