Discourse Retort

はい、それなら可能です。ただ、少しハック的な手法にはなりますが :wink:

その回避策が長期的に有効であり続けるとは限りませんし、リスクも伴います。例えば、そのコードを実行しただけでは、ユーザーの post_undo_action_window_mins サイト設定が変更されたままになってしまいます。マイグレーションの最後にもとの値に戻すことは可能ですが、ガードを回避するためにその場で設定を変更するのは理想的ではありません。

私が目指しているのは、リトートをリアクションへ確実に移行できるようにするために、ReactionManager インターフェースを少し変更することです。現状ではクライアントからのリクエストのみを処理するように設計されています。

そのための一つの方法として、以下のアプローチが考えられます:

  • toggle! 内のガードを ensure_can_toggle メソッドに抽象化する
  • ensure_can_toggle メソッドに force オプションを追加する

これは、Discourse の他の部分でもマイグレーションやバックエンドからのインポートを処理する際に一般的に採用されているアプローチです(app/ または lib/ 内で force を検索すると、いくつかの例が見つかります)。

これで意味が通じますか?

「いいね!」 2