Rails开发:Flash、过滤器、验证与缓存的深度解析
1. 会话过期处理
在会话管理中,过期处理是重要的一环。可以使用 SQL 语句来删除过期的会话:
delete from sessions
where now() - updated_at > 3600;
对于基于 DRb 的解决方案,过期操作在 DRb 服务器进程内进行。通常需要在会话数据哈希表的条目中记录时间戳,可通过单独的线程(甚至是单独的进程)定期删除哈希表中的条目。另外,应用程序可以在会话不再需要时(如用户注销)调用 reset_session
来删除会话。
2. Flash:动作间通信
2.1 Flash 概述
当使用 redirect_to
将控制权转移到另一个动作时,浏览器会生成一个单独的请求来调用该动作。原动作中设置的实例变量在重定向后的动作代码中不可用,但可以使用 Flash 实现两个实例之间的通信。
Flash 是一个临时的值存储区,它像哈希表一样组织并存储在会话数据中,可以存储与键关联的值并在后续检索。默认情况下,在处理请求期间存储到 Flash 中的值将在紧接着的下一个请求处理期间可用,处理完第二个请求后,这些值将从 Flash 中移除。
2.2 Flash 的常见用法
Flash 最常见的用途是将错误和信息字符串从一个动作传递到另一个动作。例如:
cl