RoR入門第3回
RoRではセッション情報をデータベースに保管することが簡単にできる。
すごいな。
セッションをデータベースに格納することのメリットはスケールしやすいこと。
ModelだからといってActiveRecordのサブクラスにする必要はない。
普通のオブジェクトのModelでよい。
POJOならぬPORO?なんつて
特定のモデルのIDをアクションに渡す。
<%= button_to "ボタン名", :action => 'アクション名', :id => モデル %>
IDはアクションで次のようにして取り出せる。
param[:id]
ここでRubyの等価性についてちょっと復習。
- equal?
- インスタンスが等しいかどうか。
- ==
- equal?と同じ。
- ただしほとんどのクラスでは値が等しいかどうかをテストするようオーバーライドされている。
- ===
- ==と同じ。
- Range、RegExp、Classなどのクラスでは特殊な比較をするよう、オーバーライドされている。
- case文で暗黙的に呼び出される。
自分にとって重要な部分をまとめると、
- equal?と==の働きがJavaと反対。
セッションに格納しているオブジェクトのソースコードを変更したときは、セッションをクリアし、再起動する。
rake db:sessions:clear
ただし、こんなことをしなとも済むように、アプリケーションレベルのオブジェクトをセッションに保存しない方がよい。
セッションには文字列や数値のみのIDを格納し、このIDでActiveRecordを取得するのがよい。
RoRにはflashという名前の変数が暗黙的に定義されている。
どうやらこれはリクエストの処理が終了したときに消えるが、redirect_toでリクエストを終了したときは次のリクエストまでセッション内で保持される変数のようだ。
主な用途はメッセージの表示。リダイレクト先にも表示できる。
ログ出力。
logger.error("エラーメッセージ")