質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.36%

編集で空白のパスワードが使用できます

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,230
退会済みユーザー

退会済みユーザー

2つのテーマで書きます。
何がしたいのか、今はどうなっているのかを明確に伝えます。

今の状態----
**前提:今は、パスワード制限8文字です。
**編集ページ
で変更パスワード&確認パスワードの変更をすると、8文字以上の全角or半角の空白を打ち込んで更新ができてしまいます。
しかし、登録ページでは、8文字の全角or8文字以上の半角の空白を打ち込んで登録できません。
ログインページでは、8文字以上の全角or半角の空白を打ち込んで更新した新しいパスワードの変更でログインできません。

実現したい事----
編集ページ
 と 登録ページ で8文字以上の全角or半角の'空白'を使用することを禁止したいです。ひらがなをパスワードに入力させない感じにしたいです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • sutonea

    2016/04/08 19:06

    ・Modelのソースコードを追加してください。

    キャンセル

  • sutonea

    2016/04/08 21:11

    質問内容が複雑なので、整理してください。

    キャンセル

  • sutonea

    2016/04/08 23:42

    「何がしたいのか」「今はどうなっているのか」を分けて記述してください。

    キャンセル

回答 2

checkベストアンサー

+1

遅れましたが、投稿を更新しました。更新した投稿にあるようなことは可能でしょうか?

投稿文がまだわかりづらいので、修正することをお勧めします。
また、 Model だけでなく、 Controller のソースコードがあると
こちらも状況を把握しやすくなります。

ひとまず、下記のような状態だと解釈して話を進めます。

前提条件

scaffold と devise を使って、ユーザの認証機能を作成している。
認証機能には3つの画面が存在する。

  • ユーザ新規登録画面(以下登録画面)...ユーザを新規登録する
  • ログイン画面(以下ログイン画面)...ログインを行う
  • ユーザ情報編集ページ(以下編集画面)...ユーザのパスワードを変更する

実現したいこと

3つの画面すべてにおいて、パスワードとして下記文字を入力禁止とする

  • 全角文字
  • 半角空白

現状

登録画面
  全角文字:許可
  半角空白:許可

ログイン画面
  全角文字:許可
  半角空白:許可

編集画面
  全角文字:許可
  半角空白:許可

解決のために試してほしいこと

Model に記載しているすべての validates を削除してください。
その後、もともと記載していた 下記 Validates を Model に記載してください。

validates :password, format: { with: /\A([^@\s]+)\Z/ }

Model のコードを変更したら、
登録画面、ログイン画面、編集画面それぞれについて、
全角文字、半角空白を入力して、動作を確認してください。
確認結果を下記の例を参考にまとめてみてください。

登録画面 
  全角文字:
  半角空白:

ログイン画面 
  全角文字:
  半角空白:

編集画面 
  全角文字: 
  半角空白:

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/09 17:30

    登録画面
    全角文字: パスワードを入力してください
    パスワードを正しく入力してください←出力されない
    半角空白:パスワードを入力してください
    パスワードを正しく入力してください

    ログイン画面
    空白パスワードは編集ページで空白を保存してくれなかったのでバリデーションを外した状態で空白パスワードを保存し、ログインする際にバリデーションをつけ、ログインした結果
    全角文字: メールアドレスもしくはパスワードが不正です。

    半角空白:メールアドレスもしくはパスワードが不正です。


    編集画面
    全角文字:パスワードを入力してください ←出力されない
    パスワードを正しく入力してください
    半角空白:パスワードを入力してください←出力されない
    パスワードを正しく入力してください

    キャンセル

  • 2016/04/09 18:11

    動作確認結果のご報告ありがとうございます。


    せっかく報告してくださったのに申し訳ありませんが、
    その報告内容がよくわかりません。

    私なりに、Doorさんの書いた文章を何度も読み返したのですが、
    何を言いたいのかがどうしても理解できずにいます。申し訳ありません。

    キャンセル

0

試しに、Tesuto クラスから、下記の行を削除してみてください。

validates :password, format: { with: /\A([^@\s]+)\Z/ }

削除した後、ユーザ登録ページ、編集ページなどで
空白のパスワードがどのように扱われるのか確認してみてください。


追記:
>編集ページで空白を使用するとそのまま更新されます。しかし、ログインページではその空白を使用したパスワードでログインができません。登録ページでは空白を使用するとパスワードを入力してくださいというエラーが出ます。

先ほど Tesuto クラスから バリデーションを削除したところに、
下記のコードを挿入してみてください。動作は変わりますか?

validates :username, presence: true

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/09 00:02

    返答ありがとうございます。申し訳ありません、対応を明日にさせてください。

    キャンセル

  • 2016/04/09 08:10

    おはようございます。昨日は投稿の更新ありがとうございました。
    おっしゃっているのはこういうことでしょうか?


    ・scaffold と devise を使って、ユーザの認証フォームを作成している
    ・ユーザの登録ページ、ログインページ、ユーザ情報の編集ページは作成済み

    実現したいこと
    ---
    下記の文字をパスワードとして使えないようにしたい
    ・全角文字
    ・半角空白

    キャンセル

  • 2016/04/09 13:52

    返信するの遅れました。実現したいのは、その通りです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.36%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る