When I test with rspec, below WARNING is displayed everytime.
DEPRECATION WARNING: Uniqueness validator will no longer enforce case sensitive comparison in Rails 6.1. To continue case sensitive comparison on the :email attribute in User model, pass `case_sensitive: true` option explicitly to the uniqueness validator. (called from block (2 levels) in <main> at /usr/src/app/spec/models/user_spec.rb:6)
So I tried to write this to User.rb(I expect case insensitive).
validates :email, uniqueness: { case_sensitive: false }
But, the WARNING can't be erased.
Next, I checked devise.rb(because I used devise and devise_token_auth). In devise.rb, it was written about case_insensitive.
config.case_insensitive_keys = [:email]
For your reference...
User.rb
# frozen_string_literal: true
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
include DeviseTokenAuth::Concerns::User
has_many :schedules
validates :name, presence: true, length: { maximum: 10 }
validates :email, uniqueness: { case_sensitive: false }
end
devise.rb
Devise.setup do |config|
config.mailer_sender = 'please-change-me-at-config-initializers-devise@example.com'
require 'devise/orm/active_record'
config.case_insensitive_keys = [:email]
config.strip_whitespace_keys = [:email]
config.skip_session_storage = [:http_auth]
config.stretches = Rails.env.test? ? 1 : 11
config.reconfirmable = true
config.expire_all_remember_me_on_sign_out = true
config.password_length = 6..128
config.email_regexp = /\A[^@\s]+@[^@\s]+\z/
config.reset_password_within = 6.hours
config.sign_out_via = :delete
end
Why rails don't stop WARNING?
thanks for your help.