Недавний переход на Discourse привёл к изменению имён пользователей!

Недавно я перенёс сайт на Discourse. Я не знал, что у многих пользователей изменились имена пользователей, и новые имена, похоже, используют часть их адреса электронной почты. Я никогда не сталкивался с изменением имён пользователей при предыдущих миграциях. Как я могу отменить это?

Если вы уже запустили проект, внести изменения будет сложно, хотя исходное имя пользователя должно быть сохранено в пользовательском поле. Эти проблемы необходимо решать на этапе тестирования.

Если только скрипт миграции не повреждён, причина изменения имён пользователей заключается в том, что они не соответствуют формату имён пользователей в Discourse.

Какие именно имена пользователей были изменены? Откуда вы осуществляли миграцию?

Спасибо за ваш ответ, Джей. Нам пришлось перевести сайт в режим обслуживания, чтобы внести эти исправления. Было странно, что изменились колонки имени пользователя и имени. Мы ищем способ их поменять местами. Это очень запутанно…

Вы можете посмотреть UserCustomField.where(user_id: some_id), чтобы увидеть, какие пользовательские поля существуют для этого пользователя; среди них должно быть и его исходное имя пользователя.

Нам удалось поменяться. Но после обмена профили не открываются! Пишет: «Упс, страница не найдена».

Просто для перестраховки: вы обновили страницу после переназначения имён пользователей, верно? Discourse будет использовать старые имена на стороне клиента до тех пор, пока вы не перезагрузите страницу. Поэтому, если вы переназначили имена и не обновили страницу, система попытается открыть профили пользователей, которые больше не существуют.

Спасибо. Мы проверим это.
Также я не понимаю, как оно решает автоматически назначать первую половину адреса электронной почты.

Ценная платформа позволяла пользователям создавать имена профилей с использованием пробелов и специальных символов, а в URL использовался userID.

Можем ли мы использовать userID в URL и разрешить миграцию имен профилей с пробелами и специальными символами в неизменном виде?

Мы заметили, что имена пользователей и имена в симуляциях совпадали.
Мы обнаружили, что некоторые имена теперь содержат пробелы.

Если мы поменяем местами разделы имени пользователя и имени, то Discourse может назначить половину email-адреса в качестве имени пользователя для тех, кто не соответствует руководящим принципам имен профиля.

И зачем вообще Discourse использует адреса электронной почты? Это риск для безопасности.

Нет. Discourse не разрешает пробелы и (большинство) специальные символы в именах пользователей. Именно поэтому их переписали.

Я не понимаю, что вы имеете в виду насчёт URL.

Ему нужно что-то для генерации имени пользователя.

Он делает так:

UserNameSuggester.suggest(
        opts[:username].presence || opts[:name].presence || opts[:email],

Таким образом, если у вас нет имени пользователя или имени, он возвращается к использованию первой части адреса электронной почты.

Значит, мы можем изменить это на что-то другое? Или убрать ID электронной почты как вариант?