独習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ディレクトリ以下に置いた、カスタムバリデーションファイルを呼び出すために、四苦八苦した奮闘日記です。「ええからはよ結論ださんかい!」と、筆者のように前戯もまともにできないようなせっかちな...

コメント

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