Creating a nested session?

} Can session hashes only be one level deep? For example,
} session[:person_id] =
} session[:person_full_name] = @person.full_name
} works where this returns an Array error:
} session[:person][:id] =
} session[:person][:full_name] = @person.full_name
} Error:
} You have a nil object when you didn't expect it!
} You might have expected an instance of Array.
} The error occured while evaluating nil.[]
} Is there no way to nest all the person info inside session[:person]?

Remember what you is actually going on here. When you say

session[:person_id] = are calling []= on the session object. That works fine, because
session supports []=. When you say

session[:person][:id] = are first calling [] on session and getting a nil back, because it
hasn't been set to anything. You are then calling []= on that nil, which
gives you the error you see. Try this instead:

session[:person] = { :id =>, :full_name => @person.full_name }

With that, session[:person] will contain a hash, and session[:person][:id]
will behave as expected.