Callbacks ActiveRecord
O curso trata da ordem em que o Rails roda os callbacks do ActiveRecord em volta do save, do create, do update e do destroy. Cada etapa é acompanhada numa tabela de rascunho, de before_validation até after_save. Você vê como around_save e around_create envolvem a escrita no banco com um yield. O curso explica por que Identity::User normaliza o email em before_save e cria a linha de preferências em after_create. Também aborda throw :abort, que para um save ou destroy com errors vazio, e quando a lógica deve ficar num service object.
O que você vai aprender
- ✓A ordem fixa das etapas de callback no create, no update e no destroy
- ✓Quando usar before_save ou after_create, e por que o id importa
- ✓Como obter um efeito de uma vez só com um before_validation condicional
- ✓Como around_save e around_create envolvem a escrita com yield
- ✓Como throw :abort interrompe um save ou destroy e como isso difere de uma validação
- ✓Onde termina o papel de um callback e entra um service object
O ciclo de vida dos callbacks, em ordem
Validações ActiveRecord avançadas terminou com uma pergunta: este registro pode ser salvo? O que acontece antes, durante e depois do save ficou para este curso. Então este curso abre com uma pergunta direta: quando .save roda, em que ordem o Rails faz tudo o que fica em volta dele?
Ler a aula completa grátis →Currículo
7 aulasO ciclo de vida dos callbacks, em ordem
Acompanha a ordem completa dos callbacks no create, no update e no destroy com uma tabela de rascunho.
before_save vs. after_create neste app
Explica por que Identity::User normaliza o email em before_save e cria as preferências em after_create.
create vs. update: callbacks que só disparam uma vez
Compara os callbacks de create e update com um before_validation condicional que só preenche valores vazios.
around_save e around_create: envolvendo os dois lados
Mostra como around_save e around_create dividem o código em volta do yield e se aninham.
throw :abort interrompe a cadeia
Mostra como throw :abort interrompe um save ou destroy, devolve false e deixa errors vazio.
Callbacks vs. service objects: uma tensão de design
Analisa os efeitos escondidos dos callbacks num service object e onde a lógica de negócio fica neste projeto.
Juntando tudo: o ciclo de vida completo do save
Revisa o ciclo completo do save, os dois hooks de Identity::User, throw :abort e a fronteira com service objects.