TL;DR
uniqueness
で grep して、ひたすら case_sensitive: true
を付けていきましょう。
※既存の動作を維持する場合はこれでOK。ただ、この機会に見直すことを推奨します。
環境
- Ruby: 2.6.3
- Rails: 5.2.4.1 => 6.0.2.1 へアップデート
なんだこのWarning
DEPRECATION WARNING: Uniqueness validator will no longer enforce case sensitive comparison in Rails 6.1. To continue case sensitive comparison on the :destination_type attribute in PublicReference model, pass `case_sensitive: true` option explicitly to the uniqueness validator.
Uniqueness validator を使っているところでこんなWarningが出ました。
- Rails 6.0 までは
case_sensitive: true
(大文字小文字を区別する)がデフォルト - Rails 6.1 からは
case_sensitive: false
(大文字小文字を区別しない)がデフォルト - 今までのデフォルト通り、大文字小文字を区別したチェックにしたければ、
case_sensitive: true
を明示的に指定してね
と言われています。
今まで通り、大文字小文字を区別したいケースが大半かなと思いますので、 case_sensitive: true
を指定しておきましょう。
修正例
class Post < ApplicationRecord
- validates :uuid, uniqueness: true
+ validates :uuid, uniqueness: { case_sensitive: true }
end
これでWarningを解決できました。