I have this pretty simple method:
def update_context(msg, session, sender)
    previous_context = session.context 
    session.update(context: intent_determination(msg, session.context, sender))
    session.update(context: brand_determination(msg, session.context))
    session.update(context: style_determination(msg, session.context))
    session.update(context: price_range_determination(msg, session.context))
    session.update(context: size_determination(msg, session.context))
       p previous_context
       p session.context
       p (previous_context == session.context)
    unless session.context.size == 0
      if previous_context == session.context
        session.context["intent"] = "lost"
        session.save
      end
    end
  end
My problem is certainly due to a stupid mistake I can't see but please bear with me on this one, I really can't see it.
As you can see, I "save" the session's context in a previous_context variable at the beginning of the method. Then, I'm running  a few updates on the context.
However, when I print previous_context, session.context and previous_context == session.context, I get the same result for the first two, and true for the last one. 
How is this possible ? I assigned to previous_context the value of session.context before updating it. And then, previous_context has the same value as session.context after I've updated it.
I really can't see where I screwed up here, or there is definitely something I don't understand.
 
     
     
    