Не уверен, что можно аналогичным образом связать похожий документ с Условиями использования (ToS). Ссылка «Правила чтения» работает за счёт того, что в таблице user_stats фиксируется запись read_faq, а на данный момент механизма для аналогичной фиксации по Условиям использования не предусмотрено.
Поскольку версия для просмотра пользователем не является самой темой, я полагаю, что факт просмотра этой страницы нигде не фиксируется (например, в topic_views и т. п.).
Возможно ли изменить базу данных/таблицы, чтобы добавить новое поле read_tos?
Существует потенциально неуклюжее решение…
…публикация темы как опубликованной страницы вместо использования бесшовной интеграции, как в разделах FAQ и О нас. Не знаю, сработает ли это на самом деле…
Тестирование и результаты:
SQL-запрос возвращает пользователей, которые прочитали тему, и они должны получить значок, но я не получил это уведомление.
Могу подтвердить, что посещения /pub/slug без прямого перехода к теме обновляют счётчик просмотров темы… однако даже при крайне малом времени чтения значок автоматически не был выдан.
Также стоит отметить, что сама тема по-прежнему помечается как новая и непрочитанная для пользователя.
…
Дальнейшее изолированное тестирование показывает, что SQL-запрос подразумевает, что пользователи должны перейти к теме напрямую, чтобы считаться прочитавшими её. Подтвердить или опровергнуть это я не могу, так как значок не был выдан, но это наиболее вероятно.
Вы случайно не знаете, что именно сделала команда при обновлении Условий использования, когда нам нужно было подтвердить, что мы их ознакомились? Хотя это и не бейдж, не это ли был плагин Policy?
Вы можете ускорить этот процесс, вручную запустив jobs::BadgeGrant со страницы /sidekiq/scheduler (для тех, у кого есть доступ). У меня оно сработало 3 часа назад, но время может отличаться от сайта к сайту.
Если бы вас устраивало размещение информации в обычной теме, вы могли бы создать новую тему и добавить ссылку на неё в настройку tos url в панели администратора, чтобы она отображалась во вкладках. Затем можно было бы легко выдать значок на основе просмотра этой темы (хотя ваши эксперименты с опубликованными страницами также могут принести плоды ).
По-моему, чтобы реализовать это так же, как с «Прочитать правила», вам потребуется создать плагин, воспроизводящий поведение для Условий использования (хотя это не моя сильная сторона, так что воспринимайте это с долей скептицизма ).
Это необязательное пользовательское поле, которое, на мой взгляд, отлично подходит для этой цели. Хотя вы лишь подтверждаете, что прочитали их, а не факт прочтения, поэтому всё зависит от основной цели выдачи значка.