前提・実現したいこと
Ruby on Railsでdeviseを使用し、ユーザー情報の編集機能を実装しています。以下、編集項目です。
- 名前
- メールアドレス
- パスワード
- パスワード(確認)
パスワードの変更は任意にし、入力されなかった場合はそのままユーザー情報を更新。
パスワードが入力された場合はパスワードの検証をし、バリデーションを通過した場合はパスワードを更新するようにしたのですが、半角スペースのみ入力された場合にそのまま通り編集完了画面に遷移(この時パスワードの更新はされないです)してしまいます。半角スペースのみが入力された場合にも入力を検証されるようにしたいのですが解決方法がわかりません。
ご教授をお願いします。
該当のソースコード
ユーザー情報編集時には、パスワードの入力を任意にできるよう、パスワードのバリデーションをon: :create
とon: :update
で分けています。
Ruby
1class User < ApplicationRecord 2 3... 4 5VALID_PASSWORD_REGEX = /\A[a-z\d]{8,100}+\z/i 6validates :password, presence: true, confirmation: true, format: { with: VALID_PASSWORD_REGEX }, on: :create 7validates :password, presence: true, confirmation: true, format: { with: VALID_PASSWORD_REGEX }, allow_nil: true, on: :update 8 9...
試したこと
NULL は許可するが空文字や空白文字は許可しないようにバリデーションを実装する
この記事を参考にパスワードのバリデーションを
Ruby
1validates :password, format: { without: /\A[[:space:]]*\z/, allow_nil: true }, on: :update
のようにし、パスワードの未入力は許容し、スペースが入力された場合はそれを検証するようにしてみたのですが、半角スペースに反応せず、編集完了画面に飛んでしまいます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。