Rails宝典之第十三式: Model放在Session里的危险
来源:互联网 发布:网络语言不规范原因 编辑:程序博客网 时间:2024/06/10 01:12
上次我们说到@current_user时不要将user对象放在session里,而只放user_id,然后每次去数据库取user对象。
有人不理解,这次的视频给出了答案:
我们先调用prepare,将user放进session并show,然后我们update,结果session里的user对象是更改了,而更改并没有保存到数据库。
那我们将更改放进数据库不就行了?呵呵,这样每次你更改user对象都需要更新session,太麻烦了。
每次都去数据库取,这样就能保证数据的正确性。
担心效率的朋友们,放心,还有查询缓存呢。
有人不理解,这次的视频给出了答案:
- class UsersController < ApplicationController
- def prepare
- session[:user] = User.find(:first)
- redirect_to action => 'show'
- end
- def show
- @user = session[:user]
- end
- def update
- @user = session[:user]
- @user.name = "Foo"
- redirect_to :action => 'show'
- end
- end
我们先调用prepare,将user放进session并show,然后我们update,结果session里的user对象是更改了,而更改并没有保存到数据库。
那我们将更改放进数据库不就行了?呵呵,这样每次你更改user对象都需要更新session,太麻烦了。
- class UsersController < ApplicationController
- def prepare
- session[:user_id] = User.find(:first).id
- redirect_to :action => 'show'
- end
- def show
- @user = User.find(session[:user_id])
- end
- def update
- @user = User.find(session[:user_id])
- @user.name = ""
- @user.valid?
- redirect_to :action => 'show'
- end
- end
每次都去数据库取,这样就能保证数据的正确性。
担心效率的朋友们,放心,还有查询缓存呢。
- Rails宝典之第十三式: Model放在Session里的危险
- RailsCasts13 Dangers of Model in Session 将model放在session中是危险的
- Rails宝典之第九式: 在日志里过滤敏感数据
- Rails宝典之第十四式: Model上的calculations
- Rails宝典之第十九式: admin在哪里
- Rails宝典之第四式: 将查询移位Model
- Rails宝典之第五式: 使用with_scope
- Rails宝典之第七式: layout详解
- Rails宝典之第十五式: find条件
- Rails宝典之第十六式: 虚拟属性
- Rails宝典之第十八式: 循环flash
- Rails宝典之第二十式: 限制访问
- Rails宝典之第二十二式: eager loading
- Rails宝典之第二十三式: counter cache
- Delegate 放在page_load里导致Session不自动Disposed
- 危险的森林里
- Rails宝典之第二十一式: 超级简单的认证
- 2007-07-29Rails宝典之第七式: layout详解
- 指令集学习
- Rails宝典之第十二式: 重构用户名-p3
- 無題
- android开发之查询QQ是否在线
- 80后的人生轨迹
- Rails宝典之第十三式: Model放在Session里的危险
- The jobs
- experiment:Finding crash information using the MAP file on vs2005
- 判断磁盘是否是USB连接的一种方法
- qt 用tableview 实现listview
- 仿google 的 let it snow(水雾版)
- c++中的常量折叠
- U-Boot学习笔记总结摘要
- code:blocks安装问题