class ActiveRecord::SessionStore::Session

The default Active Record class.

def self.find_by_session_id(*args)

def self.find_by_session_id(*args)
  find_by_sessid(*args)
end

def self.find_by_session_id(session_id)

def self.find_by_session_id(session_id)
  where(session_id: session_id).first
end

def data

Lazy-unmarshal session state.
def data
  @data ||= self.class.unmarshal(read_attribute(@@data_column_name)) || {}
end

def data_column_size_limit

def data_column_size_limit
  @data_column_size_limit ||= columns_hash[data_column_name].limit
end

def find_by_session_id(session_id)

Hook to set up sessid compatibility.
def find_by_session_id(session_id)
  SEMAPHORE.synchronize { setup_sessid_compatibility! }
  find_by_session_id(session_id)
end

def initialize(*)

def initialize(*)
  @data = nil
  super
end

def loaded?

Has the session been loaded yet?
def loaded?
  @data
end

def marshal_data!

def marshal_data!
  return false unless loaded?
  write_attribute(@@data_column_name, self.class.marshal(data))
end

def raise_on_session_data_overflow!

ActionController::SessionOverflowError.
larger than the data storage column. Raises
Ensures that the data about to be stored in the database is not
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

def session_id_column

def session_id_column
  'session_id'
end

def setup_sessid_compatibility!

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
    class << self; remove_possible_method :find_by_session_id; end
    def self.find_by_session_id(session_id)
      where(session_id: session_id).first
    end
  end
end