[Ruby on Rails] Devise 名前でログイン
Devise 名前でログイン
こんにちは!
Dviseのデフォルトでは、メールアドレスとパスワードでログインするようになっているので、
これを名前でログインするようにしていきます。
バージョン
Rails6.1.4
Ruby2.6.3
本題
※deviseを導入済みの前提で記述しております。
deviseの導入をまだ済んでない方は、1つ前のブログ「deviseの導入方法」についてを
参考にして頂けると、今回の内容を実装しながら出来きます。
新規登録が画面に名前を送るフォームを追加
app/views/users/registrations/new.html.erb
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true, autocomplete: "name" %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :name, autocomplete: "email" %>
</div>
※emailのフィード内のautofocus: trueを削除します。
autofocusとは
入力フォームに自動的にカーソルを表示すること。
今回は名前がを先に入力するので、名前の方に指定します。新規登録の際に名前を送っていいように許可
※フォームを加えただけでは名前は保存されないです。
config/initializers/devise.rb
config.authentication_keys = [:name] ←emailからnameへ変更
ユーザー認証時に使用するキーの設定をしています。emailの値も認証につかえるようにする
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
¦
private
¦
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up,keys:[:email]) ←ここです
end
end
ログイン画面のemailで送るフォームをnameで送るフォームに変更
app/views/users/sessions/new.html.erb
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name, autofocus: true, autocomplete: "name" %>
</div> ←追加
<div class="field">
<%= f.label :email %><br />
<%= f.email_field :name, autocomplete: "email" %>
</div> ←削除
お疲れ様でした。
見づらくてすみません。マークダウンもっと勉強しなくっちゃ
どこか間違っているところがありましたら、ご指摘宜しくお願い致します。