【问题标题】:rails 3, heroku, how to use sessionsrails 3,heroku,如何使用会话
【发布时间】:2011-06-27 08:03:06
【问题描述】:

我看到了关于如何为 rails 3 设置会话的好答案 (Rails sessions current practices)

我们从用户那里收集了一系列问题,我想在会话中维护他们的答案列表,直到我们完成,然后把它全部写出来......

但我不确定如何从会话中写入和读取信息...任何快速指针将不胜感激,例如如何保存哈希的内容

另外,将我们的应用托管在 Heroku 的网格上是否会改变我们可以/应该如何处理会话?

干杯, JP

【问题讨论】:

  • 这个问题是 Heroku 特有的吗?
  • + 好问题,感谢提问!

标签: ruby-on-rails session-state session-variables


【解决方案1】:

您无需为 Heroku 进行任何更改。默认情况下,Rails 会话存储在加密的 cookie 中,因此无需进行服务器端配置。

但是,一个 cookie 只能存储 4,096 字节的数据。如果您在会话中存储大量数据(通常不建议这样做),您可能会溢出 cookie。在这种情况下,您可能希望设置基于 ActiveRecord 或 Memcached 的 cookie。这两个都很容易做到,而且并不是 Heroku 特有的问题。如果你需要这方面的帮助,你可以随时问另一个 StackOverflow 问题。目前,在你达到极限之前不用担心。

假设 Question 和 Answer 是 ActiveRecord 模型,一些粗略的代码用于存储和读取会话中的答案:

def store_answer(question, answer)
  session[:answers] ||= {}
  session[:answers][question.id] = answer.id
end

def read_answer(question)
  Answer.find(session[:answers][question.id])
end

【讨论】:

  • 优秀而有用的答案,我不知道它是如此简单。非常感谢!
  • Answer.find(session[:answers][question.id]) 是您模型的一部分吗? (我是 MVC 和 ROR 的新手)
【解决方案2】:

Rails 中的会话非常容易使用,只需使用会话哈希结构如下:

  • (set) session[:my_name] = "Joe"
  • (读取)放置会话[:my_name]

我认为您不必为在 Heroku 上的部署进行任何更改。

【讨论】:

  • 也是一个很好的答案...简洁。这就是我们现在最终要做的事情。谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-07-23
  • 2011-04-29
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 2011-08-25
  • 1970-01-01
  • 2013-08-02
相关资源
最近更新 更多