:active_record_store + :table_name_with_underscore session issues

Today I created a new Rails 2.2.2 project.

I'm using Oracle and activerecord-oracle-adapter (1.0.0.9250).

I'm using ActiveRecord::Base.primary_key_prefix_type =
:table_name_with_underscore, which is a spec for the project that I
cannot change.

I ran `rake db:sessions:create` and it created a new migration that
looks like this:

class CreateSessions < ActiveRecord::Migration

  def self.up
    create_table :sessions do |t|
      t.string :session_id, :null => false
      t.text :data
      t.timestamps
    end
    add_index :sessions, :session_id
    add_index :sessions, :updated_at
  end

  def self.down
    drop_table :sessions
  end

end

This does not work. I get the error:
ActionController::InvalidAuthenticityToken on any forms that are
posted.

When I look in the sessions table the hashed data in the `data` field
looks normal, but there are integers being stored in the session_id
field, not the 32 character hashes I would expect. And every page
reload creates a new session, the integer stored in the session_id
field is incremented by one. I'm thinking session data is being
written, but then cannot be retrieved.

I've tried a number of things I found searching, such as:

CGI::Session::ActiveRecordStore::Session.set_primary_key 'session_id'

none of which help. Any idea what I need to do?

I have other, older Rails apps using active_record_store sessions that
work just fine, but this is my first one on Rails 2.2.2 and so far
it's a no-go.

You may want to browse:

http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html

and

http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection.html

Good luck!
Tim

When I look in the sessions table the hashed data in the `data` field
looks normal, but there are integers being stored in the session_id
field, not the 32 character hashes I would expect. And every page
reload creates a new session, the integer stored in the session_id
field is incremented by one. I'm thinking session data is being
written, but then cannot be retrieved.

Hmm. The problem you have is that by setting primary key
primary key to the sessions table. it also wants to use session_id for
the session identifier and for whatever reason, the primary key 'wins'.
You could fiddle the SessionClass for it to store the session
identifier in a different column (or
CGI::Session::ActiveRecordStore::Session.set_primary_key 'id' would
probably do the trick if you can get away with it.

Fred

I appreciate the reply but I'm not gonna bother trying to figure it
out, I switched to memory sessions this morning and it works with no
problems.

I'm not really understanding how I can have another app on Rails 2.0.2
that has this exact same setup and it works fine. Something changed
from 2.0.2 -> 2.2.2 which obviously didn't break any Rails core
tests.. I mean, if anyone is even testing on anything besides MySQL.
To use Rails in medical research means Oracle most of the time.