【rails】devise認証をemailではなく、違う項目でログインする。
4400 ワード
実行環境
devise (4.7.3, 4.7.2, 4.7.1)
ruby 2.3.0p0
rails 5.1.4
deviseのデフォルトカラムは、
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
だがしかし、今回は部屋番号で認証したいので、下記と設定した。
t.string :room_number, null: false
t.string :encrypted_password, null: false, default: ""
そのために、下記を実施する。
config/initializers/devise.rb
deviseの設定を変更するため、下記を変更する。※devise (4.7.3, 4.7.2, 4.7.1)
49 config.authentication_keys = [:room_number]
61 config.case_insensitive_keys = [:room_number]
66 config.strip_whitespace_keys = [:room_number]
app/models/user.rb
以下3つのメソッドをオーバーライド(上書き)して無効化。
def email_required? #バリデーションにemailの検証が必要かどうかを検証するメソッド
false
end
def email_changed?
false
end
def will_save_change_to_email?
false
end
controller.rb
ストロングパラメーターの設定
before_action :configure_sign_in_params, only: [:new, :create]
def configure_sign_in_params
devise_parameter_sanitizer.permit(:sign_in, keys: [:room_number])
end
完成!!
参考記事
[Rails] devise の使い方(Validatable Recoverable Rememberable)
https://tech.mof-mof.co.jp/blog/devise-option-methods-integrate-vrr/
Author And Source
この問題について(【rails】devise認証をemailではなく、違う項目でログインする。), 我々は、より多くの情報をここで見つけました https://qiita.com/pagk/items/cc548a914e70fb4a92b2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .