独習Ruby on Rails(Rails5.2.2対応)をRails6.1.3で実践中 ArgumentError (Unknown validator: ‘EmailAddressValidator’) が出た時の対処法

Ruby on Rails技術的なこと
この記事は約1分で読めます。

6.1.9 Validatorクラスで共通の独自ヘルパーを実装する

のところで、Library/app/validators/email_address_validator.rb を作成し、 Library/app/models/user.rb を書き換え、バリデーションを試してみると、

ArgumentError (Unknown validator: 'EmailAddressValidator')

というエラーが出てしまった。

原因

app/validatorsディレクトリを自動読み込みしてくれないのが原因。

Rails5では、appディレクトリ以下は全て自動読み込みしてくれてたらしいです。が、Rails6ではそうじゃない。ということで、設定ファイルに作ったディレクトリを読み込むように追記します。

対処法

config/application.rb

config.autoload_paths += %W(#{config.root}/validator)

を追記

これでOKです。

下記の記事を参考にさせていただきました。ありがとうございます!

ぬぐぐ。Rails6でlib以下のカスタムバリデーションが呼び出せない【Zeitwerkとは】 - 独学プログラマ
この記事は、この記事は、筆者がRails6.0でlibディレクトリ以下に置いた、カスタムバリデーションファイルを呼び出すために、四苦八苦した奮闘日記です。「ええからはよ結論ださんかい!」と、筆者のように前戯もまともにできないようなせっかちなお方のために、先に結論をご用意しました。ユーザーモデルからemailバリデーショ

コメント

タイトルとURLをコピーしました