同じタグに同義語を追加するとスタックします

皆様、こんにちは。

誤って、タグAをタグAの別名(シノニム)として追加してしまいました(スマホでの操作ミスです)。

  • 別名の削除でエラー500が発生します
  • リンク解除ボタンでエラー422が発生します
  • タグの削除で不明なエラーが発生します

参考までに:

  • タグAをタグBに名前変更すると、別名も同時に編集されます。
  • タグAが付いている投稿数が0件でも1件でも、上記のエラーには影響しません。

どなたか再現できますでしょうか?

「いいね!」 2

これは発生してほしくない問題のようです。おそらく、以下のような状態になったのでしょう:

私はローカル開発サイトでこれをテストしています。シノニムを作成した後、「シノニムを削除」ボタンをクリックすると 422 エラーが発生します。シノニムのゴミ箱アイコンをクリックすると 500 エラーにはならず、代わりにタグが完全に削除されてしまいます。

タグが自分自身のシノニムとして設定されるのを防ぐための保護機能を追加すべきだと考えます。

「いいね!」 1

この件を確認いただきありがとうございます。

なるほど、私の環境とは異なるようです。私の環境では、現時点でタグやシノニムを削除する方法がありません。

あなたのサイトはどのバージョンの Discourse を使用していますか?

「いいね!」 1

最新ビルドにアップグレードしました:

2.6.0.beta5 ( 811c610108 )

動作は元の投稿(OP)と同じです。

「いいね!」 1

@eviltrout 来週これを割り当てるべきですね。タグを自分自身の別名(シノニム)として追加するのは…良くありません。

「いいね!」 2

以下のコミットで修正されました:

この問題を報告してくださり、ありがとうございます @MarcP:+1:

「いいね!」 4

@MarcP のリクエストにより、このトピックを開きます。彼はコンソールを経由してもタグを削除できません。

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

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

上記の手順は私の環境では機能しますが、Marc さんでは機能しません。Marc さん、問題の詳細をこちらで詳しく教えてください。

「いいね!」 3

@techAPJ が教えてくれたコマンドは私の環境では動作しませんでした。そのため、以下のページに記載されている(少し異なる)コマンドを実行しました:How can I delete a tag in development database (on local)? - #4 by simon

シノニムタグとして「testing」を持つタグ「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)>

try:

DB.exec("delete from tags where name = 'testing'")
「いいね!」 5

これで動作しました!サムさん、ありがとうございます :slight_smile: 素敵な一週間を。

「いいね!」 2