1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

deviseでのユーザー名でログインできるようにする![Rails]

Posted at

目次

目標
環境
実装
最後に

目標

deviseにおいてのログイン機能で、名前とパスワードでログインできるようにする。

deviseを導入したデフォルトではEメールとパスワードでログインできるようになっています。

環境

mac OS Ventura 13.3
cloud9
Rails 6.1.7
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]
git version 2.39.2
devise導入

実装

※deviseは導入済みの前提です!
モデル名は任意ですが、例えば「User」の場合、Userテーブルに「name」のカラムを追加するか、すでに追加しているか確認してください。

  1. deviseのviewページの作成
rails g devise:views

このコマンドでログインページやその他のページが作成できます。

2. ログインページに名前を入力するフォームを追加

app/views/devise/sessions/new.html.erb
<div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name, autofocus: true, autocomplete: "name" %>
</div>

この際に、Eメールを入力するフォームは削除しておいてください!

3. コントローラにて「name」を保存できるように許可を与える

app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?
  #deviseの機能が行われる前にconfigure_permitted_parametersメソッドを実行

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:email,:name])#nameを追加
  end
end

初期状態の devise は、サインアップ、ログイン時に「email」と「パスワード」しか受け取ることを許可されてないため、現状では name を入力しても、データとして保存することはできません。
なので、指定したデータは保存できるよう、許可を与える必要があります!

4. 認証キーの設定

config/initializers/devise.rb
#config.authentication_keys = [:email]

最後に、devise.rbファイルの上記コードを探します!

config/initializers/devise.rb
config.authentication_keys = [:name]

上記のようにコメントアウトを外して、「:email」を「:name」に変更します!
環境や実装内容によって異なるかもしれませんが、49行目付近に記述があると思います!
以上で実装は完了です!
※もし、実装してもログインできない場合は「rails s」をし直してサーバーを再度起動してみてください。

最後に

今回はdeviseにおけるログイン方法の変更をしました。
私自身も悩んだ点だったのでアウトプットさせていただきました、、、!
今、学習している方の参考になれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?