You cannot just assume that new objects will be created out of thin air to fit with the syntax you’ve written.
The session is nothing more than a Hash.
session[:person] = {}
session[:person][:id] = @
person.id
session[:person][:full_name] = @person.full_name
or
session[:person] = {
:id => @person.id,
:full_name => @person.full_name
}
Jason
Hi --
Jason Roelofs wrote:
You cannot just assume that new objects will be created out of thin air
to fit with the syntax you've written.
But Ruby lets me do this so often! Thanks for the advice.
Not with nested structures, though, unless they're specially
engineered for it. It all goes back to the fact the and = are
actually methods:
h = {}
h["x"]["y"] ....
The inner structure can't "autovivify", because all that you're saying
here is that h["x"], whatever it may be, has a method. That
doesn't narrow it down, since any object can have a method. So
there's nothing for Ruby to infer about what it should autovivify the
object *to*.
That's different from Perl, for example, where the variables are typed
so the interpreter can figure out what inner structure you're trying
to create.
David