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)
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)
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!