TypeError(没有为类Proc定义_dump_data):

Bin*_*yan 11 ruby-on-rails ruby-on-rails-3

我正在尝试使用rails应用程序中的以下代码在会话中存储值

session[:key] = value 
Run Code Online (Sandbox Code Playgroud)

我得到以下错误

TypeError (no _dump_data is defined for class Proc):
activesupport (3.2.9) lib/active_support/message_verifier.rb:53:in `dump'
 activesupport (3.2.9) lib/active_support/message_verifier.rb:53:in `generate'
 actionpack (3.2.9) lib/action_dispatch/middleware/cookies.rb:300:in `[]='
actionpack (3.2.9) lib/action_dispatch/middleware/session/cookie_store.rb:67:in    `set_cookie'
rack (1.4.1) lib/rack/session/abstract/id.rb:330:in `commit_session'
rack (1.4.1) lib/rack/session/abstract/id.rb:206:in `context'
rack (1.4.1) lib/rack/session/abstract/id.rb:200:in `call'
actionpack (3.2.9) lib/action_dispatch/middleware/cookies.rb:341:in `call'
activerecord (3.2.9) lib/active_record/query_cache.rb:64:in `call'
activerecord (3.2.9)    lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
actionpack (3.2.9) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
activesupport (3.2.9) lib/active_support/callbacks.rb:405:in `
Run Code Online (Sandbox Code Playgroud)

任何帮助都非常感谢.

cha*_*kun 6

value要么是Proc,要么将proc嵌套在某个地方.Procs和lambdas不能被序列化/编组/转储,因为它们是闭包.闭包取决于创建时内存中的内容,因此以后无法正确反序列化.

看到这个答案.

我不确定在我的情况下我将做什么,看起来我必须找到一种方法来完成我的任务而不依赖于Procs.


And*_*uki 2

这个值是多少?它是一个复杂的物体吗?也许是一个活动记录实例?

我在尝试将 FourSquare 客户端对象放入会话时遇到了同样的问题。我已经更改为每次创建一个新实例,而不是从会话中恢复,并且工作正常。