Forum: Ruby on Rails :active_record_store + :table_name_with_underscore session issues

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Greg D. (Guest)
on 2009-01-28 23:25
(Received via mailing list)
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.




--
Greg D.
http://destiney.com/
Tim (Guest)
on 2009-01-29 02:26
(Received via mailing list)
Frederick C. (Guest)
on 2009-01-29 02:36
(Received via mailing list)
On 29 Jan 2009, at 00:26, Tim wrote:

>>
>> 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
to :table_name_with_underscore rails wants to use session_id as the
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
Greg D. (Guest)
on 2009-01-29 21:07
(Received via mailing list)
On Wed, Jan 28, 2009 at 6:35 PM, Frederick C.
<removed_email_address@domain.invalid> wrote:
> Hmm. The problem you have is that by setting primary key
> to :table_name_with_underscore rails wants to use session_id as the
> 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.

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.


--
Greg D.
http://destiney.com/
This topic is locked and can not be replied to.