013 把模型对象存入session的危险性

Be careful when storing a model in a session. It will behave differently than you expect and can easily get out of sync with the database. Instead of storing the model directly in the session, store the id to the model and use that to fetch it from the database.
 
 
在session中存储模型的时候要小心了,这样可能会发生许多与你意愿想违背的情况,并且会与数据库中的数据脱节。不要直接将model放到session中,最好存储它的id值,并且用这个id值来获取数据库中存储的对象。
 
 
3个action
  1. prepare将User模型的一个对象存入session,然后跳转到show
  2. show将session中的对象显示出来
  3. update将session中的user对象的name属性改为"Foo"(并不存回数据库),然后跳转到show
如果执行update的话,在session里会一直保存这个name="Foo",除非将session清除。
另外,如果在保存user出错时,这个错误信息也会一直存储在session中。
 
那么正确的做法是:
 
将模型对象的id存入session中,在每次显示的时候是从session中取出id值,然后到数据库中查找数据。这样就避免了将对象直接存入session中的种种问题。
 




本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/113299,如需转载请自行联系原作者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值