##実行環境
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/