railsApiが大量のバリデーションエラー文を吐いた..
railsを使ったバリデーション結果をreact(フロント側で)表示した時に起こったトラブルです。
validates :email, presence: true
validates :email, format: { with: /\A[a-zA-Z]+\z/}
例えばこんなバリデーションをmodleに書いてるとして、フロント側(今回はReact)で空白の文字を入れると
"〇〇を入力してください","〇〇は不正な値です"と2つのバリデーションエラー文が返ってきます。
基本的に空白の文字の際に出力したいエラー文は"〇〇を入力してください"くらいなので
これは少し過剰なわけです。
before
validates :email, presence: true
validates :email, format: { with: /\A[a-zA-Z]+\z/}
after
validates :email, presence: true
validates :email, format: { with: /\A[a-zA-Z]+\z/}, allow_blank: true
こんな風に allow_blank: true
を追加してあげるだけで空白時はバリデーションが実行されなくなります。
補足としては、空でないことを判定するpresence: true
は空白時にも実行してあげたほうがいいので、
presence: true
にはallow_blank: true
を追加しないほうがいいですね。
終わりに
Railsのバリデーション結果を表示したい時は必須の設定なので、ぜひ覚えてみましょう!
Share this post