.new constrói, .create persiste

Prévia grátis 1 min de leitura

Duas chamadas parecidas

article = Article.new(title: "Hello Rails")
article.persisted?
# => false
article.id
# => nil

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.

article = Article.create(title: "Created Directly")
article.persisted?
# => true
article.id
# => 1

.create parece quase igual, com a mesma classe e o mesmo hash de atributos, mas o resultado muda: uma linha salva, um id atribuído e persisted? devolvendo true. Construir a instância e salvá-la numa chamada é tudo o que o .create faz.

Dois passos, comprimidos em um

.create é .new seguido de .save, o método que a aula 2 trata, e não um mecanismo à parte. Use-o quando nada precisa acontecer com a instância entre construir e salvar.

Pontos-chave

  • .new só constrói uma instância em memória: persisted? é false e id é nil.
  • .create constrói e salva numa chamada: persisted? é true e um id é atribuído.
  • .create é um atalho para .new e depois .save.
  • A próxima aula trata do .save sozinho.
Aula 1 de 7 · grátis

Continue com a aula 2

.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.

Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.

Digite para buscar...