Ruby on Rails 8章序盤 ログイン機構

投稿者: | 2019年8月4日

Ruby on Rails 8章序盤 ログイン機構をやりました。

〇ログインページ
rails generate controller Sessions new
create や destroyのviewはいらないのでnewだけあればいい。

〇ActiveRecordのモデル≠ビューなページの作り方
ユーザ登録のように、表示する、登録するデータがモデルと1:1になっているものは先にやった。
ここでは、ビュー(表示/登録するデータを扱う)とモデルが紐づけされないケースを扱うことになる。
<%= form_for(:session, url: login_path) do |f| %>
<% end %>

〇復習
helperにメソッドを退避
def isValid?(email, password)
user = User.find_by( email: email.downcase )
return user && user.authenticate( password )
end

include SessionsHelper
をモデルへ。

後でuserモデルを使いたいなら,

return user if user && user.authenticate( password )

にしてもいいかも。後方if便利。

〇エラーメッセージにフラッシュを使う

flash[:danger] = ‘error msg’
※flashを表示するのはapplication.html.erbの中。

flashで書き出すと、「次のリクエストのレスポンス」までは有効なので、

flash後にrender→ flashと同一リクエスト内で表示。
アンカータグを踏んで次のリクエスト→ まだ表示される。
更に次のアンカータグを踏んで2つ次のリクエスト→ ここできえる。

だから、flash[:success]で表示した後にredirectしたユーザ登録には違和感がない。
(=redirectが「次のリクエスト」になるから)

flash.now[:success]という1つ寿命の短いフラッシュもある。

〇session
session[:key] = value
でセッションに値を保持できる。
裏では暗号化されている。また、sessionの場合はブラウザの閉じるで
クッキーの有効期限が切れるな設定になっている。

コメントを残す

メールアドレスが公開されることはありません。