Всем привет,
Недавно я создал компонент темы для Discourse (GitHub - Beholder-Vision/discourse-insert-model-3d: A Discourse theme component for adding 3D models to topics · GitHub), который позволяет администраторам Discourse включать загрузку и отображение 3D-моделей на своих форумах.
Сначала всё работало хорошо, но затем я получил сообщение о том, что некоторые загруженные модели исчезли. Проверив свой собственный форум, я обнаружил, что загруженные ресурсы (3D-модели и постерные изображения) также были удалены: Insert Model 3D - #2 by patrickemin.
Изучив документацию (Understanding Uploads, Images, and Attachments), я предположил, что загруженные ресурсы останутся в безопасности, поскольку на них есть ссылки в постах. Однако после дополнительного исследования я нашёл этот код: discourse/app/models/post.rb at 03bb43f7468d3aa6e73bba0805193ae50c7ec2d5 · discourse/discourse · GitHub, который, по-видимому, отвечает за идентификацию загруженных файлов на сервере. Судя по всему, загруженный файл считается ссылочным в посте только в том случае, если на него есть ссылка в одном из ограниченного набора HTML-тегов. Таким образом, загруженный файл будет распознан, если на него есть ссылка через атрибут href элемента , но не если ссылка находится в атрибуте src элемента (именно такой элемент добавляет мой новый компонент темы).
Может ли кто-то, кто хорошо знаком с этим кодом, подтвердить, правильно ли я всё понял? Если моё понимание верно, то создатели компонентов тем могут помечать ресурсы как загруженные, генерируя скрытую ссылку , указывающую на ресурс. Однако было бы очень полезно, если бы в документации (Understanding Uploads, Images, and Attachments) было обновлено описание, чтобы подчеркнуть этот нюанс.
Большое спасибо,
Алан