Проблема
Параллельное редактирование одной страницы вики может привести к непредвиденному поведению. В моём случае связь quoted_posts между двумя постами становится некорректной.
Это может привести к другим проблемам при использовании quoted_posts, например, в методе User#refresh_avatar. Отсутствие quoted_posts делает невозможным пересборку всех цитируемых постов.
Возможная причина
Предупреждение, добавленное в этом коммите, недостаточно для защиты от параллельного редактирования поста, так как проверка не является атомарной. Это редкая ситуация, но она всё же может произойти.
Метод PostRevisor#revise! вызывает QuotedPost.extract_from(@post), который удаляет все quoted_posts, если в посте нет ни одной цитаты. Когда два редактирования одновременно вызывают PostRevisor#revise!, одно из которых добавляет цитируемый пост, а другое — тоже добавляет цитируемый пост, содержимое поста может оказаться результатом редактирования с цитатами, при этом связь quoted_post будет разрушена редактированием без цитат.
Возможное решение
Возможно, стоит рассмотреть возможность получения блокировки Redis при редактировании поста.