class ActiveRecord::SessionStore::Session

The default Active Record class.

Attributes

data[W]

Public Class Methods

data_column_name() click to toggle source

Customizable data column name. Defaults to 'data'.

# File lib/active_record/session_store.rb, line 85
cattr_accessor :data_column_name
data_column_size_limit() click to toggle source
# File lib/active_record/session_store.rb, line 94
def data_column_size_limit
  @data_column_size_limit ||= columns_hash[data_column_name].limit
end
find_by_session_id(session_id) click to toggle source

Hook to set up sessid compatibility.

# File lib/active_record/session_store.rb, line 99
def find_by_session_id(session_id)
  setup_sessid_compatibility!
  find_by_session_id(session_id)
end
new(attributes = nil, options = {}) click to toggle source
Calls superclass method ActiveRecord::Base.new
# File lib/active_record/session_store.rb, line 130
def initialize(attributes = nil, options = {})
  @data = nil
  super
end

Private Class Methods

session_id_column() click to toggle source
# File lib/active_record/session_store.rb, line 105
def session_id_column
  'session_id'
end
setup_sessid_compatibility!() click to toggle source

Compatibility with tables using sessid instead of session_id.

# File lib/active_record/session_store.rb, line 110
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
    class << self; remove_method :find_by_session_id; end

    def self.find_by_session_id(session_id)
      find :first, :conditions => {:session_id=>session_id}
    end
  end
end

Public Instance Methods

data() click to toggle source

Lazy-unmarshal session state.

# File lib/active_record/session_store.rb, line 136
def data
  @data ||= self.class.unmarshal(read_attribute(@@data_column_name)) || {}
end
loaded?() click to toggle source

Has the session been loaded yet?

# File lib/active_record/session_store.rb, line 143
def loaded?
  @data
end

Private Instance Methods

marshal_data!() click to toggle source
# File lib/active_record/session_store.rb, line 148
def marshal_data!
  return false unless loaded?
  write_attribute(@@data_column_name, self.class.marshal(data))
end
raise_on_session_data_overflow!() click to toggle source

Ensures that the data about to be stored in the database is not larger than the data storage column. Raises ActionController::SessionOverflowError.

# File lib/active_record/session_store.rb, line 156
def raise_on_session_data_overflow!
  return false unless loaded?
  limit = self.class.data_column_size_limit
  if limit and read_attribute(@@data_column_name).size > limit
    raise ActionController::SessionOverflowError
  end
end