将会话从活动记录存储迁移到cookie存储

时间:2013-05-13 18:55:07

标签: ruby-on-rails session-cookies

Rails 4将包含基于加密cookie的会话。我们想从活跃的记录cookie商店改为那个。有没有办法在不打断我的应用程序客户的情况下执行此操作?我不想删除所有当前会话。

3 个答案:

答案 0 :(得分:2)

同意Nathan不要倒退,除非你因为会话存储而担心你的数据库性能。在这种情况下,我建议您的会话使用Redis或Memcached存储,而不是基于cookie。

答案 1 :(得分:0)

还有另一个问题。我试图从活动记录迁移到cookie存储,现在每个用户都会收到“我们很抱歉,但出了点问题”错误。解决方案是清除cookie,但我必须告诉每个用户。他们中的许多人会认为该网站已被破坏。所以这很糟糕。如果你不能联系每个用户,这是非常糟糕的。

答案 2 :(得分:0)

它可行,我只是以另一种方式做到了(由于我不会进入的原因,我们需要将它们放在数据库中)。在应用程序控制器中,像这样放一个前置过滤器:

prepend_before_filter :migrate_session

def migrate_session
  # migrating over old sessions
  session_model = YourSessionModel.find_by_session_id(session.id)
  if session_model
    data = session_model.data
    data.each do |key,value|
      session[key] = value
    end
    session_model.destroy
  end
end

进入会话哈希的所有内容都将保留在cookie中。在您不再有任何活动记录会话后,您可以删除此代码。