質問: 2つのテーマで書きます。 何がしたいのか、今はどうなっているのかを明確に伝えます。 **今の状態---- **前提:今は、パスワード制限8文字です。 **編集ページ**で変更パスワード&確認パスワードの変更をすると、8文字以上の全角or半角の空白を打ち込んで更新ができてしまいます。 しかし、**登録ページ**では、8文字の全角or8文字以上の半角の空白を打ち込んで登録できません。 **ログインページ**では、8文字以上の全角or半角の空白を打ち込んで更新した新しいパスワードの変更でログインできません。 **実現したい事---- 編集ページ** と **登録ページ** で8文字以上の全角or半角の'空白'を使用することを禁止したいです。ひらがなをパスワードに入力させない感じにしたいです。
回答: > > 遅れましたが、投稿を更新しました。更新した投稿にあるようなことは可能でしょうか? > > > 投稿文がまだわかりづらいので、修正することをお勧めします。 また、 Model だけでなく、 Controller のソースコードがあると こちらも状況を把握しやすくなります。 ひとまず、下記のような状態だと解釈して話を進めます。 前提条件 scaffold と devise を使って、ユーザの認証機能を作成している。 認証機能には3つの画面が存在する。 * ユーザ新規登録画面(以下登録画面)...ユーザを新規登録する * ログイン画面(以下ログイン画面)...ログインを行う * ユーザ情報編集ページ(以下編集画面)...ユーザのパスワードを変更する 実現したいこと 3つの画面すべてにおいて、パスワードとして下記文字を入力禁止とする * 全角文字 * 半角空白 現状 登録画面 全角文字:許可 半角空白:許可 ログイン画面 全角文字:許可 半角空白:許可 編集画面 全角文字:許可 半角空白:許可 解決のために試してほしいこと Model に記載しているすべての validates を削除してください。 その後、もともと記載していた 下記 Validates を Model に記載してください。 ``` validates :password, format: { with: /\A([^@\s]+)\Z/ } ``` Model のコードを変更したら、 登録画面、ログイン画面、編集画面それぞれについて、 全角文字、半角空白を入力して、動作を確認してください。 確認結果を下記の例を参考にまとめてみてください。 登録画面 全角文字: 半角空白: ログイン画面 全角文字: 半角空白: 編集画面 全角文字: 半角空白: