これは QnA のトピックだけでなく、すべてのトピックで発生していました。すべてのトピックが QnA となる「Questions」カテゴリと、トピックを QnA としてマークするための「question」タグの両方を設定しています。
ただし、現在の動作は少し異なります。以前は並べ替え順序によりそれらがリストの一番下に固定されていましたが、現在は順序が整っていないままですが、新しい投稿がそれらの下に配置されるようになっています。
これは QnA のトピックだけでなく、すべてのトピックで発生していました。すべてのトピックが QnA となる「Questions」カテゴリと、トピックを QnA としてマークするための「question」タグの両方を設定しています。
ただし、現在の動作は少し異なります。以前は並べ替え順序によりそれらがリストの一番下に固定されていましたが、現在は順序が整っていないままですが、新しい投稿がそれらの下に配置されるようになっています。
@AJDurant さん、ありがとうございます。
当社のクライアントの一人がこの問題を経験したため、実際に発生しているデータセットを詳しく調査することができました。ここでの問題の一つは、QA タグが削除されたトピックの扱いにあるのではないかと考えています。
この問題に対処する PR を開始しました。@mbcahyono さんと一緒に取り組む予定です。
特定のトピックの問題を修正する方法は以下の通りです。
./launcher enter app
rails c
topic = Topic.find(<topic_id>)
topic.posts.each { |p| p.update_columns(sort_order: p.post_number) }
もしサーバー上でこの問題に対処するためにより手厚いサポートが必要な方がいらっしゃいましたら、私まで直接ご連絡ください。無料で対応いたします。
ご返信が遅くなり申し訳ありません。今週は出張中でして。ご提示いただいたコードで、問題のある個別の投稿は修正されることを確認しました。
また、以下のコマンドを実行しても問題は解決しないことも確認しました。
rake "posts:reorder_posts[1234]"
これをすべての投稿に対して実行する方法、つまりすべての投稿をループさせる方法はありませんか?
rake posts:reorder_posts を単独で実行しても動かない場合は、まずもう一度お試しください。
それでも動作しない場合は、以下のコマンドを実行してください。
./launcher enter app
rails c
Post.update_all("sort_order = post_number")
問題の原因は特定できました。8 月に導入された不具合でした。すぐに修正版をリリースし、そのケースに対するテストも追加します。
上記のコマンドを実行したところ、以下のエラーが発生しました。
root@REMOVE-web-only:/var/www/discourse# rake posts:reorder_posts
rake aborted!
PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "post_timings_unique"
DETAIL: Key (topic_id, post_number, user_id)=(1567, 20, 3) already exists.
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.2.0/lib/patches/db/pg.rb:110:in `exec'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-2.2.0/lib/patches/db/pg.rb:110:in `async_exec'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/mini_sql-0.3/lib/mini_sql/postgres/connection.rb:201:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/mini_sql-0.3/lib/mini_sql/postgres/connection.rb:173:in `exec'
/var/www/discourse/lib/tasks/posts.rake:368:in `block (3 levels) in <main>'
/var/www/discourse/lib/tasks/posts.rake:351:in `each'
/var/www/discourse/lib/tasks/posts.rake:351:in `block (2 levels) in <main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `block in transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.3/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.3/lib/active_record/transactions.rb:212:in `transaction'
/var/www/discourse/lib/tasks/posts.rake:312:in `block in <main>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => posts:reorder_posts
(See full trace by running task with --trace)
重複キーのエラーが表示されたため、それがより大きな問題につながるかもしれないと考え、2 番目のコマンドは実行していません。
これはこの問題とは独立したデータベースの問題のようですが、こちらの修正を妨げています。すぐにご連絡いたしますので、別途デバッグしましょう。
@angus さん、ありがとうございます。すべて正常に動作しているようです ![]()
メッセージ(49 件のコピーが報告されました)
ジョブ例外: uninitialized constant Jobs::QaUpdateTopicsPostOrder
候補: Jobs::UpdateTopicPostOrder
Jobs::QAUpdateTopicsPostOrder
バックトレース
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/inflector/methods.rb:284:in const_get' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/inflector/methods.rb:284:in block in constantize’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/inflector/methods.rb:280:in each' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/inflector/methods.rb:280:in inject’
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/inflector/methods.rb:280:in constantize' /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.0.3.3/lib/active_support/core_ext/string/inflections.rb:68:in constantize’
/var/www/discourse/app/jobs/base.rb:288:in enqueue' /var/www/discourse/app/jobs/onceoff/onceoff.rb:40:in block in enqueue_all’
/var/www/discourse/app/jobs/onceoff/onceoff.rb:37:in each' /var/www/discourse/app/jobs/onceoff/onceoff.rb:37:in enqueue_all’
ご迷惑をおかけし申し訳ございません。対応中で、マージを待っています:
素晴らしい、マージされるのを楽しみにしています。修正も待ち遠しいですね。良いお年を。
カテゴリ設定にある「QnA 1 対多形式」設定の役割は何ですか?
投票を撤回するにはどうすればよいですか?オプションには投票を撤回できる時間の設定がありますが、実際に撤回する方法が見つかりません。
実際にこのプラグインが使用されている良い例はありますか?ぜひ実動の様子を見てみたいです!
黄色い「投票を取り消す」テキストを選択してください。以下のスクリーンショットを参照してください。
いくつかのフィードバック項目に気づきました:
qa trust level vote limits 管理設定はデフォルトで選択解除されていますが、それでも「信頼レベルに設定された投票数を超えられません」というエラーが表示されます。これは意味がわかりません?これは意図された仕様でしょうか、それとも私のテーマにバグがあるのでしょうか?
ありがとうございます!
プラグインをアンインストールすることで、投稿の通常の順序を復元することはできますか?
以前報告されたバグにより、会話が非常に混乱してしまっています ![]()
はい、このプラグインと Solved Plugin の間に競合があるようです。具体的には、スクリーンショットにある「解決済み」要素が原因です。このプラグインは現時点では Solved Plugin を正式にサポートしていません。
はい、有効になっているカテゴリでこのプラグインを無効にするだけで、投稿は通常の順序に戻ります。
このプラグインをありがとうございます! 1つ質問があります。プラグインが削除された場合、コンテンツはどうなりますか? 投票と返信の特別な並べ替えはなくなりますが、「返信」と各返信への「コメント」はどうなりますか? それらは残りますか、それともなくなりますか?
お尋ねする理由は、共同ユーザーガイドの作成にこのプラグインを使用し始めたからです。各返信にコメントがあるのは非常に便利です。投票も有望ですが、意図しない結果を招き、削除したい場合はどうなりますか? 投票を削除したいがためにガイドを失うのは残念です。
最悪の場合、CSSで投票UIを削除し、プラグインを残しておくことができると思います。
素晴らしい質問ですね。
コメントと回答は、単に表示順が異なるだけの投稿です。保持されます。
プラグインをアンインストールしたい場合は、カテゴリ設定で「このカテゴリのすべてのトピックをQnAにする」のチェックを外すだけです。これにより、すべての投稿が元の順序に戻ります。
例えば、try.thepavilion.io の QnA カテゴリを標準の順序(つまり、時系列順(24時間後に元に戻ります))に元に戻しました。
これを踏まえて、プラグインを試してみます。もし投票がその目的を果たせなければ、それらを削除するには2つの選択肢があります。CSSによる軽量な方法と、プラグインを無効化する重い方法です。コンテンツの損失はありません。Discourseコアコンポーネントの素晴らしい適応です!
ちなみに、ご興味があればお伝えしますが、私たちはあなたのプラグインを使用して製品の共同ビデオガイドを作成しています。人々はこの製品に関する作成されたビデオへのリンクを招待されています。動作するように、いくつかのラベルをカスタマイズしました。Bitwig Video Guide - Bitwish をご覧ください(まだ始まったばかりなので、ほとんど空の状態です。また、ほとんどのサブカテゴリはミュートされているため、匿名ユーザーにはより空っぽに見えます)。