ActiveRecord: criando registros
O curso trata de como o ActiveRecord cria linhas no banco. Compara o .new, que só constrói uma instância em memória, com o .create, que constrói e salva numa chamada. Explica o .save e o retorno true ou false, o que acontece quando uma validação falha e como errors.full_messages indica a regra que falhou. Mostra quando save! e create! devem gerar ActiveRecord::RecordInvalid. Também apresenta a atribuição em massa, o motivo de um controller não usar params bruto e o teste de cada método no sandbox do console.
O que você vai aprender
- ✓A diferença entre .new e .create
- ✓Como o .save persiste uma instância e devolve um booleano
- ✓Ler errors.full_messages depois de um save que falhou
- ✓Quando usar save! e create! para gerar exceção
- ✓O que é atribuição em massa e por que params bruto precisa de salvaguarda
- ✓Testar métodos que escrevem dados no rails console --sandbox
.new constrói, .create persiste
ActiveRecord: introdução ao model criou instâncias assim. .new nunca toca o banco: persisted? devolve false, e id fica nil porque nenhuma linha recebeu um.
Ler a aula completa grátis →Currículo
7 aulas.new constrói, .create persiste
Compara o .new, que constrói uma instância não salva, com o .create, que constrói e salva numa chamada.
.save: transformando uma instância construída numa linha real
Mostra como o .save transforma uma instância em linha e devolve true ou false, sem devolver o registro.
Quando save retorna false
Explica como uma validação que falha faz o .save devolver false e como errors.full_messages indica a regra.
save! e create!: quando a falha deveria levantar uma exceção
Trata de save! e create!, que geram ActiveRecord::RecordInvalid, e de quando preferi-los às versões sem bang.
Um hash de atributos, tratado com cuidado
Apresenta a atribuição em massa e explica por que um controller passa article_params ao .new, e não params bruto.
Testando tudo isso num sandbox
Roda todos os métodos de escrita do curso num sandbox do console, onde o exit desfaz cada mudança.
Juntando tudo: um save, todo caminho
Revisa construir, salvar, falhar, gerar exceção, atribuição em massa segura e sandbox a partir de um exemplo de duas linhas.