Ajouter un synonyme au même tag bloque

Bonjour à tous,

J’ai accidentellement ajouté le tag A comme synonyme sous le tag A (par erreur, depuis mon téléphone).

  • La suppression du synonyme renvoie une erreur 500
  • Le bouton de dissociation renvoie une erreur 422
  • La suppression du tag renvoie une erreur inconnue

Cela pourrait être utile :

  • Je peux renommer le tag A en B et le synonyme est également modifié.
  • Avoir 0 ou 1 publication avec le tag A ne change rien pour les erreurs ci-dessus.

Quelqu’un peut-il reproduire ce problème ?

2 « J'aime »

Cela semble être une situation qui ne devrait pas être autorisée. Je suppose que vous vous êtes retrouvé avec quelque chose comme ceci :

Je teste cela sur mon site de développement local. Après avoir créé le synonyme, cliquer sur le bouton « Supprimer le synonyme » renvoie une erreur 422. Cliquer sur l’icône poubelle pour le synonyme ne me donne pas d’erreur 500, mais supprime complètement le tag.

Je pense qu’une protection devrait être ajoutée pour empêcher un tag d’être défini comme son propre synonyme.

1 « J'aime »

Merci d’avoir vérifié ce problème.

Hmm, d’accord, c’est différent de mon installation. Je n’ai aucun moyen de supprimer le tag ou le synonyme pour le moment.

Quelle version de Discourse votre site utilise-t-il ?

1 « J'aime »

Je viens de passer à la dernière version :

2.6.0.beta5 ( 811c610108 )

Le comportement est le même que dans mon message d’origine.

1 « J'aime »

Nous devrions attribuer cela la semaine prochaine @eviltrout, ajouter un tag comme synonyme de lui-même n’est .. pas bien.

2 « J'aime »

Corrigé via :

Merci d’avoir signalé ce problème @MarcP. :+1:

4 « J'aime »

Ouverture de ce sujet à la demande de @MarcP. Il n’arrive pas à supprimer le tag, même via la console.

cd /var/discourse
./launcher enter app
rails c

tag = Tag.find_by_name("tag_name")
tag.destroy

Ce qui précède ne fonctionne pas pour Marc, alors que cela fonctionne pour moi. Marc, peux-tu détailler ton problème ici ?

3 « J'aime »

La commande @techAPJ m’ayant envoyée ne m’a pas fonctionné, mais j’ai exécuté les commandes (légèrement différentes) trouvées sur : How can I delete a tag in development database (on local)? - #4 by simon

J’ai obtenu les résultats suivants en essayant de supprimer mon tag « testing » qui possède un tag synonyme : « testing ».

[1] pry(main)> t = Tag.find_by_name('testing')
=> #<Tag:0x000055a268f6f990
 id: 35,
 name: "testing",
 topic_count: 0,
 created_at: Wed, 11 Nov 2020 04:38:06 UTC +00:00,
 updated_at: Thu, 19 Nov 2020 03:44:35 UTC +00:00,
 pm_topic_count: 0,
 target_tag_id: 35>
[2] pry(main)> t.destroy!
SystemStackError: stack level too deep
from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.3/lib/active_record/reflection.rb:120:in `_reflect_on_association'
[3] pry(main)>

Essayez :

DB.exec("delete from tags where name = 'testing'")
5 « J'aime »

Ça a marché ! Merci Sam :slight_smile: Bonne semaine.

2 « J'aime »