##sessionとかflashってどれくらいの間データを保持しているんだろう?
railsでウェブサイトを作っている時、定義した変数等は画面を遷移した時に、すぐに消えてしまいます。
@user等のインスタンス変数は一度の画面遷移で死んでしまう経験をしたことが多いと思います。
__sessionやflashは長生きすると聞いていたので、寿命を見てみたい!__という好奇心から記事を書きました。
##実験開始
今回は自分のPFに無理やり作ったので少し見にくくなっています。
###①コントローラにsession flash paramsの出場選手を定義
とっつきにくいイメージかもしれませんが、案外カジュアルに定義できちゃいます。
def top
session[:life]="私はsession。生きています"
flash[:life]="私はflash。生きています。"
params[:life]="私はparams。生きています。"
end
###②ビューページに選手達を表示する記述を追加
<%= session[:life]%><br>
<%= flash[:life]%><br>
<%= params[:life]%><br>
<%= yield %>
###③画面遷移を何度かして、どれくらい生きられるかを見る
####0遷移目
皆表示されていることを確認。
####1遷移目
早くもparamsが息を引き取ります。
####2遷移目
ここでflashも力尽きました。
##結言
名前 | 寿命 |
---|---|
params | 1遷移キル |
flash | 2遷移キル |
session | キルするまで生きている |
sessionにユーザーのログイン状態が保存されていれば、
ずっとログイン状態を保っていることにも納得できます。
ログアウトはsessionに保存しているユーザーのログイン状態をdestroyしていたんですね。