Sevencop/UniquenessValidatorExplicitCaseSensitivity

sevencopにSevencop/UniquenessValidatorExplicitCaseSensitivityというCopを追加した。

ActiveRecord 6.0と6.1の間で、MySQLアダプターを利用している場合、UniquenessValidatorの発行するクエリが変わるという問題がある。この対策を講じる上で活用できるかもしれないCopだ。

validates :name, uniqueness: true

上のようなコードを検知し、下のようなコードに置き換える機能を持っている。

validates :name, uniqueness: { case_sensitive: true }

恒常的に使うCopでは無いが、次の点で価値がありそうだ。

  • 機械的にコードを検出できる
  • とりあえずバージョン間で挙動が変わらない形に自動変換できる