サイトをDiscourseに移行したのですが、多くのユーザーのユーザー名が変更され、新しいユーザー名はメールアドレスの一部を使用しているようです。以前の移行でユーザー名が変更されたことは一度もありません。どうすれば元に戻せますか?
ライブに移行した場合、変更は困難ですが、元のユーザー名はユーザーのカスタムフィールドに格納されているはずです。これらの問題はテスト段階で解決するのが理想的です。
移行スクリプトが壊れていない限り、ユーザー名が変更される理由は、Discourseのユーザー名形式と互換性がないためです。
変更されたユーザー名にはどのようなものがありますか?どこから移行しましたか?
ジェイさん、お返事ありがとうございます。これらの修正を行うために、サイトをメンテナンスモードにする必要がありました。ユーザー名と名前の列が変更されたのは奇妙でした。どのように入れ替えることができるか検討中です。非常に混乱しています…
UserCustomField.where(user_id: some_id) を見ると、そのユーザーのカスタムフィールドがすべて表示され、元のユーザー名も含まれているはずです。
スワップできましたが、スワップ後にプロファイルが開かなくなりました!「おっと、ページが見つかりません」と表示されます。
念のため確認ですが、ユーザー名を再マッピングした後、ページをリロードしましたか? Discourse はリロードするまでクライアントサイドで古い名前を使用するため、名前を再マッピングしてリロードしなかった場合、存在しないユーザープロファイルを開こうとします。
ありがとうございます。確認いたします。\nまた、メールアドレスの最初の半分を自動的に割り当てる方法がわかりません。
貴重なプラットフォームでは、ユーザーはスペースや特殊文字を使用してプロフィール名を作成でき、URL には userID を使用していました。
URL に userID を使用し、スペースや特殊文字を含むプロフィール名をそのまま移行することは可能でしょうか?
シムのユーザー名と名前が同じであることがわかりました。
名前によってはスペースが含まれるようになったことに気づきました。
ユーザー名と名前のセクションを入れ替えると、Discourse はプロファイル名ガイドラインに準拠していないものに対して、メール ID の半分をユーザー名として割り当てる可能性があります。
そもそも、なぜディスコースは電子メールアドレスを使用するのでしょうか?セキュリティリスク
いいえ。Discourseでは、ユーザー名にスペースや(ほとんどの)特殊文字は許可されていません。そのため、書き換えられました。
URLについて何を言っているのか理解できません。
ユーザー名を生成するために何かを使用する必要があります。
次のように行います。
UserNameSuggester.suggest(
opts[:username].presence || opts[:name].presence || opts[:email],
そのため、ユーザー名または名前がない場合は、メールアドレスの最初の部分を使用するようにフォールバックします。
別のものに変更できますか?それともメールIDをオプションから削除しますか?