1
resposta

Por uitlizar o gorm.Model o modelo fazia o soft delete

Por utilizar o gorm.Model o modelo fazia o soft delete apenas atualizando a coluna deleted_at ao invés de excluir realmente o registro da tabela.

Precisei utilizar o unscoped.

database.DB.Unscoped().Delete(&aluno)
1 resposta

Olá, Horácio!

Pelo que entendi, você está utilizando o pacote gorm.Model no seu código e percebeu que ao utilizar o método Delete, o registro não é excluído da tabela, mas sim atualizado na coluna deleted_at, correto? E você precisou utilizar o método Unscoped para conseguir excluir o registro de fato.

Quando você utiliza o gorm.Model, o pacote GORM adiciona automaticamente os campos id, created_at, updated_at e deleted_at ao seu modelo. O campo deleted_at é utilizado para fazer o soft delete, ou seja, ao invés de excluir o registro da tabela, ele apenas atualiza esse campo com a data e hora em que o registro foi "deletado".

Para realizar o soft delete utilizando o gorm.Model, você pode utilizar o método Delete, como você mencionou, ou utilizar o método Unscoped().Delete para excluir o registro de fato, ignorando o soft delete. Ambos os métodos funcionam, porém o método Unscoped().Delete é mais direto e não requer que você desative o soft delete manualmente.

Aqui está um exemplo de como utilizar o método Unscoped().Delete para excluir um registro:

database.DB.Unscoped().Delete(&aluno)

Espero ter esclarecido sua dúvida! Se tiver mais alguma pergunta, é só me dizer. Bons estudos!

Espero ter ajudado e bons estudos!