.new constrói, .create persiste
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
.newsó constrói uma instância em memória:persisted?éfalseeidénil..createconstrói e salva numa chamada:persisted?étruee umidé atribuído..createé um atalho para.newe depois.save.- A próxima aula trata do
.savesozinho.
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.