Discourse Retort

Да, я мог бы это сделать. Хотя это было бы своего рода костылем :wink:

Не уверен, что этот обходной путь останется рабочим со временем. Кроме того, это довольно рискованно. Например, если я просто запущу этот код, настройка сайта пользователя post_undo_action_window_mins останется изменённой. Можно было бы вернуть её обратно в конце миграции, но такие изменения настроек на лету, чтобы обойти Guardian, не являются идеальным решением.

В идеале мне нужно внести небольшие изменения в интерфейс ReactionManager, чтобы можно было надёжно мигрировать retorts в реакции. В настоящее время он настроен только для обработки запросов от клиента.

Один из способов сделать это:

  • абстрагировать Guardian в методе toggle! в метод ensure_can_toggle
  • сделать метод ensure_can_toggle зависимым от опции force

Такой подход обычно используется для обработки миграций или импорта с бэкенда в других частях Discourse (если вы поищете force в app/ или lib/, то найдёте несколько примеров).

Всё понятно?

2 лайка