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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

2回答

1854閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2016/04/08 09:26

編集2016/04/08 14:55

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

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sutonea

2016/04/08 10:06

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

2016/04/08 12:11

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

2016/04/08 14:42

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

回答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

sutonea

総合スコア207

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/04/09 08:30

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

2016/04/09 09:11

動作確認結果のご報告ありがとうございます。 せっかく報告してくださったのに申し訳ありませんが、 その報告内容がよくわかりません。 私なりに、Doorさんの書いた文章を何度も読み返したのですが、 何を言いたいのかがどうしても理解できずにいます。申し訳ありません。
guest

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
sutonea

総合スコア207

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/04/08 10:57

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

退会済みユーザー

2016/04/08 11:11

:usernameだとエラーが出て進めず、:passwordと指定したらアクセスでき、更新した結果、 エラーが発生したためアカウントは保存されませんでした パスワードを入力してください となり、エラーが出ました。
sutonea

2016/04/08 11:19

申し訳ありません。おっしゃるとおり、:username ではなく :password でしたね・・・。 エラーというのは、次のどちらでしょうか? ・パスワードを入力する画面上に「パスワードを入力してください」と表示されている ・Rails のエラー画面が表示されている もし後者なのであれば、エラーの詳細を教えてください。
退会済みユーザー

退会済みユーザー

2016/04/08 11:25

前者です。 http://railsdoc.com/references/validates このサイトの正規表現パターンに一致しているか(format)とは関係ありませんか?
sutonea

2016/04/08 11:30

正規表現は関係ないと思います。 私もそのサイトを先ほど確認していました。 正規表現パターンと関係がないかどうかを調べる為に、 validates presence を試していただいたのです。 >前者です。 うーん、であればもう出来上がっていると思うのですが・・・ 私が何か意味を取り違えているのでしょうか?
退会済みユーザー

退会済みユーザー

2016/04/08 12:06 編集

質問があります。私の憶測ですがそのvalidatesはパスワードの値の入力を必須するためだけと思い、空白8文字の変更を制御するのではないと思いますがどうなのでしょうか。
sutonea

2016/04/08 12:36

はい、それはおっしゃる通りです。
退会済みユーザー

退会済みユーザー

2016/04/08 13:17

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

2016/04/08 15:02

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

2016/04/08 23:10

おはようございます。昨日は投稿の更新ありがとうございました。 おっしゃっているのはこういうことでしょうか? ・scaffold と devise を使って、ユーザの認証フォームを作成している ・ユーザの登録ページ、ログインページ、ユーザ情報の編集ページは作成済み 実現したいこと --- 下記の文字をパスワードとして使えないようにしたい ・全角文字 ・半角空白
退会済みユーザー

退会済みユーザー

2016/04/09 04:52

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問