LoginSignup
4
0

More than 3 years have passed since last update.

【Rails6】DEPRECATION WARNING: Uniqueness validator will no longer enforce case sensitive comparison in Rails 6.1.

Posted at

TL;DR

uniqueness で grep して、ひたすら case_sensitive: true を付けていきましょう。
※既存の動作を維持する場合はこれでOK。ただ、この機会に見直すことを推奨します。

環境

  • Ruby: 2.6.3
  • Rails: 5.2.4.1 => 6.0.2.1 へアップデート

なんだこのWarning :thinking:

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を解決できました。

参考

Rails 6.0でDeprecatedになるActive Recordの振る舞い3つ - かみぽわーる

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0