CGI 変数をデータベースにしまう部分を作成しよう。 transaction method は、PStore 変数内で実行するときに用いる method である。
# PStore 変数.transaction do #### データベースを取り扱う処理 #### # end
PStore 変数 db に transaction method を組み合わせ、 データを一気にしまう(取り出す)。
CGI 変数 "studentname", "comment" を Hash の対として作り、それは opinion という名前で代入していた。 項目が欠けていたら CGI 変数を保存しないよう、分岐文を設定する。
この opinion という Hash 対をまるごと保存することを考える。 保存するとき、lunch.db にデータをしまうように設定してある。 初回に動かすときには PStore 変数 db が Hash 配列となるよう設定する。 このデータベースを作ったあとは、 以前のデータを Hash 配列にしまい、 CGI 変数が代入された Hash を付加していく。
# データベースに保存するときの方法 db.transaction do if db["opinion"] == nil db["opinion"] = Hash.new # PStore 配列の key "opinion" にしまうデータは # Hash 形式でしまっていく end opinion = db["opinion"] # 今までの PStore 配列を opinion # にしまっておく opinion[studentname] = comment # studentname を key comment を value で # しまう end