闪存消息存储在哪里?

时间:2011-09-07 08:58:09

标签: ruby-on-rails ruby flash-message

我认为它们存储在cookie中 - 但不,cookie检查没有给我任何东西。会话也不存储它们。那么,我能在哪里找到它们呢?

我需要这个来直接设置它们(而不是通过flash哈希)。

3 个答案:

答案 0 :(得分:9)

它们存储in your session store。 rails 2.0的默认值是cookie存储,但请检查config/initializers/session_store.rb以检查您是否使用了默认值以外的其他内容。

答案 1 :(得分:2)

根据APIdock : ActionController/Flash,它存储在会话中。

  

请注意,如果禁用会话,则只能使用flash.now。

使用flash.now时,您的值在下一个请求中不可用。

答案 2 :(得分:0)

我正在寻找更详细的答案,最后我通过调查找到了答案。如果您的项目将其会话存储在Postgres数据库中,则以下内容适用。

注意:您的应用可能与多个数据库有连接。我仍然没有弄清楚Rails如何确定使用哪些连接。我的项目session_store.rb是空的。

您将在sessions表格中找到Flash消息。有一个名为data的列,其中包含base64编码的字符串。

如果解码字符串,您将找到一个二进制blob,它不仅包含flash消息(以编组形式,因此它们可以表示任何类型的Ruby对象),还包含CSRF令牌和其他几个的东西。

整个blob实际上是一个编组的哈希表。它可以在Ruby中使用Marshal.load进行解组,并且在进行任何更改后,可以使用Marshal.dump对其进行重新编组。