deviseを使用して電子メールに基づいてユーザー名を自動的に作成できますか?Devise。彼の電子メールに基づいて自動的にユーザー名を作成する
登録ページには、電子メールとパスワードのフィールドしかありません。
たとえば、ユーザーが電子メール[email protected]
で新しいアカウントを作成した場合、 私は彼のユーザー名が自動的にrandomname
になりたいと思います。どうしたらいいですか?
deviseを使用して電子メールに基づいてユーザー名を自動的に作成できますか?Devise。彼の電子メールに基づいて自動的にユーザー名を作成する
登録ページには、電子メールとパスワードのフィールドしかありません。
たとえば、ユーザーが電子メール[email protected]
で新しいアカウントを作成した場合、 私は彼のユーザー名が自動的にrandomname
になりたいと思います。どうしたらいいですか?
^[^@]+
のような正規表現を使用してメールアドレスの最初の部分を取得できます。@
の前の文字列の先頭からすべてを返します。
^ /* start of string or line */
[^@] /* character class capturing everything except @ */
+ /* match must happen atleast one time */
ユーザー名をデータベースに追加するには、callbackを使用します。
class User < ActiveRecord::Base
before_create :set_username
private
def set_username
self.username = self.email[/^[^@]+/]
end
end
[email protected]とho[email protected]の誰かがこの紛争を解決するにはどうすればいいですか? –
同じ名前でURLが異なるメールを処理するには、最後に乱数を追加できます。
self.username = "#{self.email[/^[^@]+/]}-#{SecureRandom.hex(1)}"
これは、上記のコメントに2通の電子メールにhoobas-1f
hoobas-3c
を返します。
[email protected]、[email protected]、[email protected]についてはどうしますか? –
小さな聴衆がいるサイトではまれなケースだと思いますし、ユーザーは登録後にユーザー名を変更することもできます。とにかく、準備する方が良いので、コールバックを使用して、すでに取得したユーザー名にrandomname2/3 /などの接頭辞を追加します。 – evfwcqcg