Come posso eliminare un tag nel database di sviluppo (in locale)?

Continuando la discussione da Ripristino manuale di un backup di Discourse per lo sviluppo:

sul mio computer locale, voglio eliminare un tag dal database di backup prima del ripristino. Come posso farlo tramite console?

Per eliminare un tag dalla console di Rails, prova:

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

Chiamare destroy! invece di delete nell’ultimo comando pulirà tutti i record sul sito associati al tag rimosso.

Grazie per il tuo aiuto :blush:

È possibile eliminare un tag da un database che non è ancora stato avviato? Cioè, da un backup che non può essere ripristinato (a causa del problema del tag duplicato)?

Spero che la domanda sia chiara.

Se lo facessi io, inizierei tornando al sito da cui è stato creato il file di backup, eliminerei il tag tramite la console di Rails e poi creerei un nuovo file di backup.

Se ciò non è possibile o se non risolve il problema del tag duplicato, potresti eliminare la riga dalla tabella aprendo un terminale psql su di essa. Qualcosa del genere:

DELETE FROM tags WHERE name = <il_tuo_nome_tag>;

La mia preoccupazione riguardo a questo è che non rimuoverà gli utilizzi del tag eliminato dal database del sito nello stesso modo in cui viene fatto se si utilizza il comando destroy! di Rails. Potrebbe essere una buona idea testare questa operazione su una copia del file di backup per assicurarsi che non rompa nulla.

Potrebbe anche essere una buona idea eseguire un’istruzione SELECT prima di eliminare il tag. Questo potrebbe mostrare la causa del problema:

SELECT FROM tags WHERE name = <il_tuo_nome_tag>;