initializing instance variables
This commit is contained in:
parent
1f8edb996b
commit
bdbe390a98
@ -119,6 +119,11 @@ def self.find_by_session_id(session_id)
|
||||
end
|
||||
end
|
||||
|
||||
def initialize(attributes = nil)
|
||||
@data = nil
|
||||
super
|
||||
end
|
||||
|
||||
# Lazy-unmarshal session state.
|
||||
def data
|
||||
@data ||= self.class.unmarshal(read_attribute(@@data_column_name)) || {}
|
||||
@ -128,7 +133,7 @@ def data
|
||||
|
||||
# Has the session been loaded yet?
|
||||
def loaded?
|
||||
!!@data
|
||||
@data
|
||||
end
|
||||
|
||||
private
|
||||
|
63
activerecord/test/cases/session_store/session_test.rb
Normal file
63
activerecord/test/cases/session_store/session_test.rb
Normal file
@ -0,0 +1,63 @@
|
||||
require 'cases/helper'
|
||||
require 'action_dispatch'
|
||||
require 'active_record/session_store'
|
||||
|
||||
module ActiveRecord
|
||||
class SessionStore
|
||||
class SessionTest < ActiveRecord::TestCase
|
||||
def setup
|
||||
super
|
||||
Session.drop_table! if Session.table_exists?
|
||||
end
|
||||
|
||||
def test_data_column_name
|
||||
# default column name is 'data'
|
||||
assert_equal 'data', Session.data_column_name
|
||||
end
|
||||
|
||||
def test_table_name
|
||||
assert_equal 'sessions', Session.table_name
|
||||
end
|
||||
|
||||
def test_create_table!
|
||||
assert !Session.table_exists?
|
||||
Session.create_table!
|
||||
assert Session.table_exists?
|
||||
Session.drop_table!
|
||||
assert !Session.table_exists?
|
||||
end
|
||||
|
||||
def test_find_by_sess_id_compat
|
||||
klass = Class.new(Session) do
|
||||
def self.session_id_column
|
||||
'sessid'
|
||||
end
|
||||
end
|
||||
klass.create_table!
|
||||
|
||||
assert klass.columns_hash['sessid'], 'sessid column exists'
|
||||
session = klass.new(:data => 'hello')
|
||||
session.sessid = 100
|
||||
session.save!
|
||||
|
||||
found = klass.find_by_session_id(100)
|
||||
assert_equal session, found
|
||||
assert_equal session.sessid, found.session_id.to_i
|
||||
ensure
|
||||
klass.drop_table!
|
||||
end
|
||||
|
||||
def test_find_by_session_id
|
||||
Session.create_table!
|
||||
s = Session.create!(:data => 'world', :session_id => 10)
|
||||
assert_equal s, Session.find_by_session_id(10)
|
||||
Session.drop_table!
|
||||
end
|
||||
|
||||
def test_loaded?
|
||||
s = Session.new
|
||||
assert !s.loaded?, 'session is not loaded'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user