Да, я мог бы это сделать. Хотя это было бы своего рода костылем ![]()
Не уверен, что этот обходной путь останется рабочим со временем. Кроме того, это довольно рискованно. Например, если я просто запущу этот код, настройка сайта пользователя post_undo_action_window_mins останется изменённой. Можно было бы вернуть её обратно в конце миграции, но такие изменения настроек на лету, чтобы обойти Guardian, не являются идеальным решением.
В идеале мне нужно внести небольшие изменения в интерфейс ReactionManager, чтобы можно было надёжно мигрировать retorts в реакции. В настоящее время он настроен только для обработки запросов от клиента.
Один из способов сделать это:
- абстрагировать Guardian в методе
toggle!в методensure_can_toggle - сделать метод
ensure_can_toggleзависимым от опцииforce
Такой подход обычно используется для обработки миграций или импорта с бэкенда в других частях Discourse (если вы поищете force в app/ или lib/, то найдёте несколько примеров).
Всё понятно?