kar*_*res 3 ruby serialization ruby-on-rails
假设我有一个User < ActiveRecord::Base.现在,假设我想创建一个用户实例,验证它并将其存储在会话中,如果我无法保存它.
user = User.new
...
session[:new_user] = user unless user.save
...
Run Code Online (Sandbox Code Playgroud)
使用ActiveRecord会话可能最终no marshal_dump is defined for class Proc会来自Marshal.dump.
现在,解决此类序列化错误(找到"无效" Proc对象)的最佳方法是什么(通常不一定是AR)?
通常最好将用户ID存储在会话中,而不是User实例本身.这确实意味着您必须对经过身份验证的请求执行db(或memcache)查找,但它可以为您节省大量序列化/缓存的麻烦,否则您将不得不处理这些问题.
而且,从Proc某种意义上说,它不是"无效的" .Proc实例是Ruby代码和应用程序状态的容器,因此无法进行序列化.
| 归档时间: |
|
| 查看次数: |
6002 次 |
| 最近记录: |