ロイの奮闘記録

PdMをやってるロイの日記です。人のつながりを増やしたいと思いながら、社会と奮闘しています

#28 7/16 8章 基本的なログイン機構

8章 基本的なログイン機構

 

sessionはコントローラです! !

routesには追加した。

 

名前付きルート

test "should get new" do
    get login_path

 黄色いところ謎。いつも変わる

 

まじ不明

セッションフォームとユーザー登録フォームの最大の違いは、セッションにはSessionモデルというものがなく、そのため@userのようなインスタンス変数に相当するものもない点です。したがって、新しいセッションフォームを作成するときには、form_forヘルパーに追加の情報を独自に渡さなければなりません。

 

ユーザーをデータベースから見つけて検証する

  def create
    user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      # ユーザーログイン後にユーザー情報のページにリダイレクトする

※authenticateメソッド:

引数に渡された文字列 (パスワード) をハッシュ化した値と、データベース内にあるpassword_digestカラムの値を比較します

 

→言葉でまとめると

「ユーザーがデータベースにあり、かつ、認証に成功した場合にのみ」

 

ヘルパーモジュールって謎

  include SessionsHelper

を全controllerの親である、ApplicationControllerに入れることで、治る。

 

module SessionsHelper

  # 渡されたユーザーでログインする
  def log_in(user)
    session[:user_id] = user.id
  end
end

なぜここで、log_inメソッドを定義するのか。

(ヘルパーメソッドという。)

 

モジュールとは、クラスのようなものである。

→クラスと合わせて、モジュールを使用するすることで、

擬似的に多重継承を行っているようにコードを書くことができます。

 

Cuurent_userメソッド

別のページでユーザーIDを使いたいため、メソッド化する。

findでidを引数に取ると、ユーザーが登録出来ていない際も、nilでエラーにならない。

 

fixture 

事前に用意したテストデータを読み込み、

常にDBの内容を一定に保つための仕組みのことを、フィクスチャと呼ぶ

 

8.24~8.3 テスト関連不明