Rails+Deviseでユーザー名でサインインできるようにする

タイトルのように成功したのでメモ。

まずは users テーブルに name 列を追加。

takatoh@nightschool $ rails g migration add_name_to_users name

できたマイグレーションファイルを編集。name 列にインデックスをつけてユニークにする。

でもってマイグレート。

takatoh@nightschool $ rake db:migrate

これでデータベースの準備は完了。

次に Devise の設定。config/initializers/devise.rb の32行目をアンコメントして :email を :name に変更。

これで、Devise はユーザー認証にメールアドレスじゃなくユーザー名を使うようになる。

Devise がユーザー名を受け付けるように configure_pergitted_parameters をオーバーライド。これは app/controllers/application_controller.rb で行う。

あとはビューの変更だ。app/views/users/registrations/new.html.erb にユーザー名の欄を追加し、app/views/users/sessions/new.html.erb には email の欄の代わりにユーザー名の欄を作る。前者はサインアップ、後者はサインインの時に使われるテンプレート。

これでひと通り終了。試してみよう。

sign-up-with-name

うまくいった!

Rails+Deviseでユーザー名でサインインできるようにする” への1件のコメント

  1. ピンバック: railsのdeviseを使ってUserモデルに一対一のリレーションシップでユーザー情報を紐付ける | IT技術情報局

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください