class ActiveRecord::SessionStore::Session
The default Active Record class.
Constants
- SEMAPHORE
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/session.rb, line 14 cattr_accessor :data_column_name
data_column_size_limit()
click to toggle source
# File lib/active_record/session_store/session.rb, line 28 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/session.rb, line 33 def find_by_session_id(session_id) SEMAPHORE.synchronize { setup_sessid_compatibility! } find_by_session_id(session_id) end
new(*)
click to toggle source
Calls superclass method
# File lib/active_record/session_store/session.rb, line 64 def initialize(*) @data = nil super end
Private Class Methods
session_id_column()
click to toggle source
# File lib/active_record/session_store/session.rb, line 39 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/session.rb, line 44 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
Public Instance Methods
data()
click to toggle source
Lazy-deserialize session state.
# File lib/active_record/session_store/session.rb, line 70 def data @data ||= self.class.deserialize(read_attribute(@@data_column_name)) || {} end
loaded?()
click to toggle source
Has the session been loaded yet?
# File lib/active_record/session_store/session.rb, line 77 def loaded? @data end
Private Instance Methods
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/session.rb, line 93 def raise_on_session_data_overflow! unless loaded? return false if Rails::VERSION::MAJOR < 5 throw :abort end limit = self.class.data_column_size_limit if limit and read_attribute(@@data_column_name).size > limit raise ActionController::SessionOverflowError end end
serialize_data!()
click to toggle source
# File lib/active_record/session_store/session.rb, line 82 def serialize_data! unless loaded? return false if Rails::VERSION::MAJOR < 5 throw :abort end write_attribute(@@data_column_name, self.class.serialize(data)) end