使用方法分配会话哈希

assigning a session hash with a method

我正在尝试使用如下方法设置会话哈希的值:

omni = request.env["omniauth.auth"]    
session["devise.user_attributes"] = personal_info(omni)

方法的return值只是一个散列:

def personal_info(omni)
  facebook_info = omni["extra"]["raw_info"]
  registration_data = {email: facebook_info["email"]}
  registration_data[:gender] = facebook_info["gender"]
  registration_data
end

我可以直接调用该方法并获取散列 returned,但是当我检查会话的值时,我得到一个空散列 {} 并且当我检查特定的值时会话的一部分,session["devise.user_attributes"] 我得到 nil 回来。谁能解释为什么会这样?关于在会话中存储数据,我有什么不明白的地方吗?

尝试:

session.merge! "devise.user_attributes" => personal_info(omni)

所以问题在于我如何尝试验证我的会话是否已正确设置。上面的代码确实有效......