2つのテーマで書きます。
何がしたいのか、今はどうなっているのかを明確に伝えます。
**今の状態----
**前提:今は、パスワード制限8文字です。
編集ページで変更パスワード&確認パスワードの変更をすると、8文字以上の全角or半角の空白を打ち込んで更新ができてしまいます。
しかし、登録ページでは、8文字の全角or8文字以上の半角の空白を打ち込んで登録できません。
ログインページでは、8文字以上の全角or半角の空白を打ち込んで更新した新しいパスワードの変更でログインできません。
実現したい事----
編集ページ と 登録ページ で8文字以上の全角or半角の'空白'を使用することを禁止したいです。ひらがなをパスワードに入力させない感じにしたいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
遅れましたが、投稿を更新しました。更新した投稿にあるようなことは可能でしょうか?
投稿文がまだわかりづらいので、修正することをお勧めします。
また、 Model だけでなく、 Controller のソースコードがあると
こちらも状況を把握しやすくなります。
ひとまず、下記のような状態だと解釈して話を進めます。
前提条件
scaffold と devise を使って、ユーザの認証機能を作成している。
認証機能には3つの画面が存在する。
- ユーザ新規登録画面(以下登録画面)...ユーザを新規登録する
- ログイン画面(以下ログイン画面)...ログインを行う
- ユーザ情報編集ページ(以下編集画面)...ユーザのパスワードを変更する
実現したいこと
3つの画面すべてにおいて、パスワードとして下記文字を入力禁止とする
- 全角文字
- 半角空白
現状
登録画面
全角文字:許可
半角空白:許可
ログイン画面
全角文字:許可
半角空白:許可
編集画面
全角文字:許可
半角空白:許可
解決のために試してほしいこと
Model に記載しているすべての validates を削除してください。
その後、もともと記載していた 下記 Validates を Model に記載してください。
ruby
1validates :password, format: { with: /\A([^@\s]+)\Z/ }
Model のコードを変更したら、
登録画面、ログイン画面、編集画面それぞれについて、
全角文字、半角空白を入力して、動作を確認してください。
確認結果を下記の例を参考にまとめてみてください。
登録画面
全角文字:
半角空白:
ログイン画面
全角文字:
半角空白:
編集画面
全角文字:
半角空白:
投稿2016/04/09 07:56
総合スコア207
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/04/09 08:30
2016/04/09 09:11
0
試しに、Tesuto クラスから、下記の行を削除してみてください。
ruby
1 validates :password, format: { with: /\A([^@\s]+)\Z/ }
削除した後、ユーザ登録ページ、編集ページなどで
空白のパスワードがどのように扱われるのか確認してみてください。
追記:
編集ページで空白を使用するとそのまま更新されます。しかし、ログインページではその空白を使用したパスワードでログインができません。登録ページでは空白を使用するとパスワードを入力してくださいというエラーが出ます。
先ほど Tesuto クラスから バリデーションを削除したところに、
下記のコードを挿入してみてください。動作は変わりますか?
ruby
1 validates :username, presence: true
投稿2016/04/08 10:54
編集2016/04/08 11:07総合スコア207
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/04/08 10:57
退会済みユーザー
2016/04/08 11:11
2016/04/08 11:19
退会済みユーザー
2016/04/08 11:25
2016/04/08 11:30
退会済みユーザー
2016/04/08 12:06 編集
2016/04/08 12:36
退会済みユーザー
2016/04/08 13:17
2016/04/08 15:02
2016/04/08 23:10
退会済みユーザー
2016/04/09 04:52
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。