Мы обновили уровни доверия, разблокировав все из них, но заметили, что у пользователей по-прежнему отображаются старые иконки титулы.
Я вежливо предлагаю запретить пользователям использовать значки уровней доверия, если у них нет требуемого уровня доверия для их отображения.
Я считаю, что значки должны быть динамическими, так как система уровней доверия динамична.
Такое простое изменение решит проблему, с которой мы сталкиваемся, и, вероятно, многих других администраторов, поскольку очень часто пользователи «теряют» свой уровень доверия со временем.
Под иконкой вы имеете в виду флейры? Что вы подразумеваете под «не группы»?
Могли бы вы предоставить скриншоты?
Если я установлю пользователю уровень доверия 3 (trust_level_3), который является группой с иконкой флейра, а флейр профиля пользователя установлен в none, иконка уровня доверия 3 всё равно автоматически устанавливается:
Мне не кажется логичным текущее положение дел, так как я хочу, чтобы в коллекции значков отображался только текущий уровень доверия. В идеале я бы хотел, чтобы это был самый заметный значок на карточке пользователя (то есть всегда отображался в одном и том же видном месте), но не так навязчиво, как флейр аватара.
Я добился близкого к этому результата, заменив значки доверия по умолчанию на некоторые пользовательские, которые используют SQL и автоматически возвращаются к исходному состоянию. Могу поделиться ими, если хотите.
Извините, но я всё ещё не понимаю. Вы начали с фразы «Мы обновили уровни доверия, разблокировав их все» — разве это по определению не означает, что все пользователи достигли TL4, максимального уровня доверия?
У нас был заблокирован TL3. Поэтому, когда мы разблокировали уровни доверия, большинство пользователей опустились ниже (мы использовали Discord, так как люди просили об этом, и поэтому в Discourse какое-то время почти не было активности).
Это могло бы стать отличным обходным решением. Пожалуйста, поделитесь, если хотите!
Некоторые изменения происходят в результате регулярных фоновых задач. Возможно, вам придется подождать день, прежде чем изменения уровня доверия отразятся в учетных записях.
При настройке по умолчанию пользователи могут попадать в группу TL3 и покидать её. Поэтому нормально, что человек присоединяется к группе, получает значок, а позже покидает группу и теряет значок — я так полагаю.
То есть, достигнутый максимальный уровень — это TL3, но если вы потеряли TL3 из-за снижения активности, то обычно вы теряете все индикаторы того, что когда-либо имели TL3. Я так думаю.
Вы правы — SQL-запрос виден в «официальных» бейджах, и именно так это работает. Также система специально настроена так, чтобы бейджи «низших» уровней доверия оставались на месте.
Например, вот SQL-запрос для TL3:
SELECT u.id user_id, current_timestamp granted_at FROM users u
WHERE trust_level >= 3 AND (
:backfill OR u.id IN (:user_ids)
)
Поскольку редактировать SQL в «официальных» бейджах нельзя, моим обходным решением было просто клонировать каждый официальный бейдж и заменить >= на =. Это гарантирует, что выдаётся только один бейдж (по крайней мере, после того как старый будет отозван в ходе ночной проверки).
Теперь я понимаю, что это может быть вашей реальной проблемой — что названия остаются у пользователей после того, как они потеряли уровни доверия (и бейджи, отозванные в ходе ежедневной проверки SQL). Я пока не изучал это подробно, чтобы воспроизвести проблему, но вы сняли галочку «Разрешить использовать бейдж как название» для этих случаев?
Отмечу, что это уже решено в новом эксперименте с карточкой пользователя здесь, в Meta :
Это практически решает проблему с моей точки зрения. Но было бы здорово, если бы сортировка также применялась на странице /u/username/summary.
P.S.
Я отредактировал заголовок исходного сообщения, чтобы точнее отразить фокус обсуждения. Перенёс его в #feature, но затем понял, что мы пока не до конца уверены в этом (пока что) — продолжаем!
Они есть — просто это не происходит мгновенно (отзыв работает только ночью).
Если они вообще не исчезают у вас, возможно, вам потребуется зайти в консоль Rails.
Вам, скорее всего, придется сделать это и для удаления любых оставшихся записей в поле Title. Их не должно быть сложно найти, а затем удалить содержимое поля Title для них.
Мне, безусловно, больше нравилось бы, если бы стандартные запросы для значков были настроены на отзыв устаревших значков (как в приведенном выше изменении SQL), но это, конечно, на усмотрение команды Discourse.