トピックアクションの「レンチ」アイコン内に、新しいオプションを追加していただけないでしょうか。具体的には、トピックのステータスを「保留」に変更するオプション(「保留にする」など)です。
主なユースケースは、何らかの理由でトピックの内容が疑問視される場合で、どのように扱うべきかもう少し検討が必要になる場面です。レンチをクリックしてステータスを「保留」に変更するのが最も効率的な方法だと思われますが、もちろん他のご意見も歓迎いたします。
トピックアクションの「レンチ」アイコン内に、新しいオプションを追加していただけないでしょうか。具体的には、トピックのステータスを「保留」に変更するオプション(「保留にする」など)です。
主なユースケースは、何らかの理由でトピックの内容が疑問視される場合で、どのように扱うべきかもう少し検討が必要になる場面です。レンチをクリックしてステータスを「保留」に変更するのが最も効率的な方法だと思われますが、もちろん他のご意見も歓迎いたします。
意味がわかりません。最初の投稿にブックマークタイマーを設定するのはなぜですか?
彼が求めているのは、特定のトピックや投稿を「監視ワード」に引っかかったかのように非表示にすることです。投稿がユーザーには表示されない一方、後で対応できるようレビューキューに回されることを意図しています(例:投稿者に対してその投稿の内容や不適切な理由について連絡する)。
ちょっと待って、つまりすでに審査キューに入っている投稿について話しているんですか?それとも既存の投稿を審査キューに「強制的」に追加するんですか?
それは面白いアイデアですね…
既存の投稿をレビューキューに強制的に含める。
@pfaffman その通りです。
@codinghorror 他に何かお役に立てることはありますか?
これはいいアイデアだと思いますが、実装面での難易度はわかりません。どう思いますか、@sam?
返信がなければ、それほど難しくないかもしれませんね。@eviltrout または @Roman なら、どの程度の手間がかかるか正確にご存知だと思います。
ステータスを「保留」に変更したら、トピックをハード削除して別のテーブルに移す必要があるかもしれません。
どの投稿も問題なく機能すると思いますが、トピックは少し特殊なケースですね…この投稿に不適切な言葉が含まれていたと仮定して、それを修正し、強制的にレビューキューに投入しましょうか?
はい、単一の投稿であれば比較的簡単でしょう(順序が崩れる可能性はありますが、実現不可能ではありません)。しかし、返信がついたトピック全体を扱うとなると非常に複雑になります。
どの程度のユースケースになるのかはわかりませんが、元の投稿者(OP)からはそのような要望があるようです。
ジェーンがトピックを作成:「マシュマロを食べるのが好き」
ジムが返信:「知らないのか?このサイトは『マシュマロ以外』について語る場所だ」
サイトはキャンディについて扱うものですが、運営者はマシュマロを好んでいません。今は午前5時……彼らにはこの件に対応する余裕がありません。
ボタンをクリックして、ジェーンのトピックを承認キューに戻します。これは明日に対処しましょう。
問題は……これをどう対処するかです。再投稿した際のタイムスタンプはどうなるのでしょうか。レビューキューは、複数の投稿をまとめて処理することをサポートしていません。
現時点で「サポートされている方法」と言えるのは以下の通りです。
欠点は、URLを知っていれば誰でもまだ閲覧できてしまうことです。
別の選択肢としては:「削除」ボタンを押し、削除されたコンテンツにフラグを立てる(レビュー機能でこれが可能かは不明ですが、モデレーターが削除されたコンテンツにフラグを立てられるようにするのは妥当かもしれません)。
はい、大きな違いは、トピックが作成される前にキューに入れる方が、作成後よりもはるかに簡単だということです。
それでも、キューで処理されるまで非表示にする機能はサポートしています。@Roman は来週戻った際に、この機能の実装見積もりを提供できるはずです。
@ked さん、これで問題ありませんか?上記の方法を試されましたか?![]()
はい、試して理解しました。他の制約や上記で議論されている関連問題を考えると、理想的ではありませんが、実用的だと思われます。
私の主なユースケースは、トピックが作成されて表示された際、それが「監視ワード」機能で検知されることを希望する場合です。主に、例えば1時間以内にこれらを確認し、まだ最初の返信がないことが多いです。実用的なアイデアとして、最初の返信がないトピックに対してのみ、レンチメニューに「保留にする」オプションを追加するのはどうでしょうか?単なる考えですが。
いずれにせよ、この件について他に進展がなければ、「非公開にする」手順を使用します。
ご確認いただき、ありがとうございます。
お待たせして申し訳ありません。この件についてかなり考えてみました。
投稿を保留(pending)状態にするということは、その投稿をハードデリートし、必要なデータをすべてレビュー対象(reviewable)の payload 属性に保存して再作成できるようにするということです。dependent: :destroy や dependent: :delete_all とタグ付けされたアソシエーションによって、この移行中にデータが失われるのではないかと懸念したため、この処理は数回書き直しを行いました。しかし、いくつかのテストを行った結果、安全に行えると考えています。
トピックに返信がない場合、または最初の投稿でない場合にこれを行うことは、低から中程度の労力で可能でしょう。投稿をキューに追加するロジックはすべて NewPostManager#enqueue メソッド内にありますので、これを別クラスに抽出して再利用する必要があります。承認後は常にトピックの末尾に保留中の投稿を追加するため、特定の位置に追加するにはもう少し作業が必要になります。
一方、返信があるトピックを保留状態に戻すことは、このアプローチではより複雑になるでしょう。レビュー対象としてシリアライズするのは少しやりすぎかもしれません。代わりに、トピックを一時的に非表示にするのはどうでしょうか?例えば、信頼されたユーザーによってスパムとしてフラグ付けされた場合に、すでにこの処理を行っています。
あるいは、常にフラグ付けして削除(または非表示)にするという方法もあり、それによってすべてが簡単になるかもしれません。ハードデリートして投稿をキューに追加する方が優れている理由を思いつきません。
ここに更新を投稿し忘れました。フラグモーダルに「Take Action…」の隣に「Flag Post」ボタンを追加しました。投稿をクリックすると、その投稿がキューに送られ非表示になります。その後、スタッフが確認するまでその状態が維持されることをユーザーに知らせるメッセージが送信されます。
@Roman さん、ありがとうございます