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