現在RailsTutorialの8章の「ユーザーの検索と認証」を行っております。
下記if文のif user && user.authenticate(params[:session][:password])
の部分です。&&は論理値比較をするということなのですが、コードを見る限り、比較対象になっているuser
もuser.authenticate(params[:session]
もtrueを返すという話でした。
オブジェクトがもともと論理値をもっていることはわかるのですが、今回の場合比較対象がメールアドレスとパスワードが存在しているかということで、これだとメールアドレスが間違っているのでも入れてしまうのではないか?と思いました。
理解が曖昧な部分があるので、理屈がどうなっているのかが解決できるといいなと考えております。お手数おかけしますが、よろしくお願いいたします。
ruby
1def create 2 user = User.find_by(email: params[:session][:email].downcase) 3 if user && user.authenticate(params[:session][:password]) 4 log_in user 5 redirect_to user 6 else 7 flash.now[:danger] = 'Invalid email/password combination' 8 render 'new' 9 end 10 end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。