Rails 跨请求对象与操作详解
1. 重定向基础
在 Rails 应用中,重定向是常见操作。默认情况下,所有重定向都被标记为临时的,仅影响当前请求。若要进行永久重定向,需在响应头中设置相应状态:
headers["Status"] = "301 Moved Permanently"
redirect_to("http://my.new.home")
需注意,重定向方法会向浏览器发送响应,和渲染方法遵循相同规则,每个请求只能执行一次。
2. 跨请求的对象和操作概述
多数跨请求持久化的状态数据存于数据库,通过 Active Record 访问,但部分状态数据生命周期不同,需不同管理方式。例如在 Depot 应用中,购物车对象存于数据库,而当前购物车的标识由会话管理;Flash 通知用于在重定向后的下一个请求中传递简单消息;过滤器用于从 URL 中提取区域设置数据。
3. Rails 会话
Rails 会话是类似哈希的结构,可跨请求持久化。与原始 Cookie 不同,会话能存储任何可序列化的对象,适合在 Web 应用中保存状态信息。比如在商店应用中,用会话在请求间保存购物车对象。Rails 会在处理每个请求结束时保存购物车,处理新请求时恢复正确的购物车。
3.1 基于 Cookie 的会话
默认的 Rails 会话存储方式是将数据作为 Cookie 发送到客户端。虽不适合存储需对客户端保密的信息,但能避免在会话中保存易过期的复杂对象。其好处是减轻数据库负载,无需清理过期会话。不过
超级会员免费看
订阅专栏 解锁全文
77

被折叠的 条评论
为什么被折叠?



