session
sessionとは
主にログイン機能を実装するときに使う。ページを移動しても、ログイン状況を維持することができるもの。
なぜsessionが必要なのか?
sessionがないと、ページ移動すると情報を引き継ぐことができないから。
インターネットを支えているプロトコルであるHTTPは、ステートレス(状態を記憶しておらず、ただリクエストに対するレスポンスだけで処理する)なもの。
HTTPは、同じリクエストに対しては、常に同じレスポンスを返すというのが、基本的な動作。
今ではステートレスなサイトの方が珍しく、ユーザーに合わせた動きをするのが、一般的。
「アクセスした人が過去に行った操作履歴」を「状態」として保持し、それに合わせてレスポンスを返すステートフルな動きを実現するためのしくみの1つがセッション。
sessionの使い方
・セッションにデータを入力するとき
session[:キー名] = 値
・値を取り出すとき
値 = session[:キー名]
before_action
before_actionとは
該当するクラス内の全てのアクション直前に実行されるメソッド。
各コントローラの全アクションで共通する処理がある場合に使うと便利。
(例)ログイン認証のあるアプリケーション
before_actionの使い方
コントローラにbefore_actionとして処理したいメソッドを定義して、class定義の下に書く。
class SampleController < ApplicationController before_action :メソッド名 ・・・ def メソッド名 ・・・ end end