From d80d9a52bdc8b6ddf3b1ec846ddafd96d4ab3e8c Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Tue, 5 Jul 2005 02:29:42 +0000 Subject: r2837@asus: jeremy | 2005-07-05 00:34:31 -0700 Don't restrict sessid compat. check to a single run. Reset cached column info before checking in case it's stale (may happen if you change table_name). Make the test a private class method. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1693 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../session/active_record_store.rb | 39 +++++++++++----------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/actionpack/lib/action_controller/session/active_record_store.rb b/actionpack/lib/action_controller/session/active_record_store.rb index d539fd2a95..4700f2419a 100644 --- a/actionpack/lib/action_controller/session/active_record_store.rb +++ b/actionpack/lib/action_controller/session/active_record_store.rb @@ -46,26 +46,6 @@ class CGI find_by_session_id(session_id) end - # Compatibility with tables using sessid instead of session_id. - def setup_sessid_compatibility! - if !@sessid_compatibility_checked - if columns_hash['sessid'] - def self.find_by_session_id(*args) - find_by_sessid(*args) - end - - alias_method :session_id, :sessid - define_method(:session_id) { sessid } - define_method(:session_id=) { |session_id| self.sessid = session_id } - else - def self.find_by_session_id(session_id) - find :first, :conditions => ["session_id #{attribute_condition(session_id)}", session_id] - end - end - @sessid_compatibility_checked = true - end - end - def marshal(data) Base64.encode64(Marshal.dump(data)) end def unmarshal(data) Marshal.load(Base64.decode64(data)) end def fingerprint(data) Digest::MD5.hexdigest(data) end @@ -83,6 +63,25 @@ class CGI def drop_table! connection.execute "DROP TABLE #{table_name}" end + + private + # Compatibility with tables using sessid instead of session_id. + def setup_sessid_compatibility! + # Reset column info since it may be stale. + reset_column_information + if columns_hash['sessid'] + def self.find_by_session_id(*args) + find_by_sessid(*args) + end + + define_method(:session_id) { sessid } + define_method(:session_id=) { |session_id| self.sessid = session_id } + else + def self.find_by_session_id(session_id) + find :first, :conditions => ["session_id #{attribute_condition(session_id)}", session_id] + end + end + end end # Lazy-unmarshal session state. Take a fingerprint so we can detect -- cgit v1.2.3