Сделать опцию «Ожидает» из меню действий темы (гаечный ключ)

Извините за задержку. Я довольно много об этом думал.

Перевод поста в статус «на рассмотрении» означает его полное удаление и сохранение всех необходимых данных для его воссоздания внутри атрибута payload объекта reviewable. Мне пришлось переписать этот код несколько раз, так как я опасался потери данных в процессе перехода из-за ассоциаций с пометкой dependent: :destroy или dependent: :delete_all. Однако после некоторых тестов я считаю, что это должно быть безопасно.

Реализация этого для темы без ответов или когда речь не идёт о первом посте потребует небольших или умеренных усилий. Вся логика постановки поста в очередь находится в методе NewPostManager#enqueue, поэтому нам нужно будет вынести её в отдельный класс и переиспользовать. Мы всегда добавляем ожидающие одобрения посты в конец темы после утверждения, поэтому добавление их в определённую позицию потребует немного больше работы.

Возврат темы с ответами в статус «на рассмотрении» с использованием этого подхода должен быть более сложным. Сериализация её в объект reviewable кажется излишней. Возможно, мы могли бы временно скрыть тему? Например, мы уже делаем это, когда пост помечается как спам доверенным пользователем.

В качестве альтернативы мы могли бы всегда помечать и удалять (или скрывать) посты, что значительно упростило бы всё. Я не могу придумать причину, по которой полное удаление и постановка поста в очередь были бы лучше.

2 лайка