2011年5月5日木曜日

Railsで簡易予約システムを考える(3)

今回はセッションをDBで管理するための設定を行います。

$ rake db:sessions:create

      exists  db/migrate
      create  db/migrate/20110505041507_create_sessions.rb

いくつか設定を変更する必要があります。今回Railsのバージョン 2.3.11 で行っていますので、古いバージョンの場合とファイル名などが一部異なる可能性があります。

config/enviroment.rbのRAILS_GEM_VERSIONパラメータが指定のバージョンになっているか。
(いくつかの古いバージョンの場合、バグなのか設定方法の違いなのかわかりませんが、
 CSRFの対策がされている箇所でエラーが発生することがあります。)

RAILS_GEM_VERSION = '2.3.11' unless defined? RAILS_GEM_VERSION

app/contorollers/application_controller.rbのprotect_from_forgery に
コメントがあれば外します。(私の環境では、はじめからコメントされていませんでした)
protect_from_forgery # See ActionController::RequestForgeryProtection for details

続いて、config/initializers/session_store.rbの以下の箇所のコメントを外します。

ActionController::Base.session_store = :active_record_store

では、はじめに実行したコマンドで、sessionsテーブルのマイグレーションファイルができていますので、rakeタスクを実行します。

$ rake db:migrate

PostgreSQLの場合、session_id列がstring型で作成されますが、デフォルトだと255byteとなるため、セッションのレコード作成時に、長さが足らず、エラーとなることがあるようです。
私の場合、手っ取り早くstring型をtextにしてしまいました。
(※その後、string型で、 :limit => 1024 に変更しました)

これで、セッション情報をデータベースで管理するようになるそうです。

0 件のコメント:

コメントを投稿