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

Ruby on Rails

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です。

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

https://blog.cloud-acct.com/posts/column-rails6-zeitwerk-autoload/

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください