Como posso excluir uma tag no banco de dados de desenvolvimento (localmente)?

Continuando a discussão de Restauração manual de um backup do Discourse para desenvolvimento:

Na minha máquina local, quero excluir uma tag no banco de dados do backup antes da restauração. Como posso fazer isso via console?

Para excluir uma tag no console do Rails, tente:

t = Tag.find_by_name('<seu_nome_de_tag>')
t.destroy!

Chamar destroy! em vez de delete no último comando limpará todos os registros no site que estão associados à tag removida.

Obrigado pela sua ajuda :blush:

É possível excluir uma tag de um banco de dados que ainda não foi iniciado? Ou seja, de um backup que não pode ser restaurado (devido ao problema de tag duplicada)?

Espero que a pergunta esteja clara.

Se eu estivesse fazendo isso, começaria voltando ao site onde o arquivo de backup foi criado, excluindo a tag pelo console do Rails e, em seguida, criando um novo arquivo de backup.

Se isso não for possível ou se não resolver o problema da tag duplicada, você pode excluir a linha da tabela abrindo um terminal psql nela. Algo como:

DELETE FROM tags WHERE name = <nome_da_sua_tag>;

Minha preocupação com isso é que isso não removerá os usos da tag excluída do banco de dados do site da mesma forma que é feito ao usar o comando destroy! do Rails. Pode ser uma boa ideia testar isso em uma cópia do arquivo de backup para garantir que nada seja quebrado.

Também pode ser uma boa ideia executar uma instrução SELECT antes de excluir a tag. Isso pode mostrar a causa do problema:

SELECT * FROM tags WHERE name = <nome_da_sua_tag>;