質問: ### 前提・実現したいこと 前も質問しましたが、釈然としないのでまた質問します。 もし、不明な点があれば何でもいいので教えてください。 前提としてパスワードは8文字以上と設定しています。 ### 発生している問題・エラーメッセージ ``` Railsで会員制のアプリケーションを作りたいと思い、deviseのgemをインストールしました。 **登録、ログイン、編集**ページを作り終え、動作確認をしたところ、 登録ページでパスワードを入力する際、 ←この8文字の空白を入力して保存できるかできないかをその3つのページでテストしたところ、 登録ページではエラーが出て、編集ページではエラーが出ず保存されました。 しかし編集ページでその空白8文字を保存してログアウト→ログインする際、 保存した空白8文字のパスワードでログインできず、保存する前のパスワード、 例えばpasswordから に変えたとして、passwordでしかログインできないことです。 この空白の規制をつけたいと思っていますが、なかなか思い通りにはいきませんので どなたかご教授願います。 ``` ### 該当のソースコード ``` ユーザモデルとデバイス用のビューを添付しました。 パスワードはeCxRdxです ``` ### 試したこと ユーザモデルにこの処理を施し、失敗しました。 validates :password, format: { with: /\A([^@\s]+)\Z/ } validates :password, presence: true ### 補足情報(言語/FW/ツール等のバージョンなど) devise (3.4.0) rails (4.2.5.1)
回答: こちらの記事はご覧になりましたでしょうか? 予測になりますが登録画面と編集画面で挙動が変わるのは恐らく呼ばれているアクションが違いeditのほうで@user.saveが呼ばれていないからな気がします。 この辺り確認いただければとおもいます。 因みにデバッグくらいの意味しかありませんが,saveメソッドを呼ばなくても,@userのメソッド中でvalid?メソッドを呼ぶとvalidationが効くのでsaveメソッドの実装をする前にvalidationを試すことも出来ます。