0

我有一个类在启动时从数据库中读取。我希望能够将它存储在会话中,但是在尝试这样做时出现以下错误:错误类型错误:没有为类互斥锁定义 marshal_dump 我正在做的事情可能/合理吗?如果是这样,我应该怎么做?如果不是,那么在会话中存储类实例有什么好的替代方法?目前我的解决方法只是在我需要使用它时实例化它,但这并不是一个好的解决方案或能够扩展的解决方案。

4

1 回答 1

1

一个不错的选择是将记录的 id 存储在会话中。然后,当您再次需要该数据时,您将使用帮助程序从内存或数据库中返回数据。一个完美的例子是在许多 ruby​​ 身份验证 gem 中发现的 current_user 辅助方法中使用的模式。如果您发现它是一个瓶颈,您可以修改此帮助程序以使用缓存层,但我会在事后将其作为优化。

必须将对象转换为可以在会话中愉快地生存的编组格式的问题,存在存储空间、陈旧数据以及可能无意中暴露于机密数据的问题。

于 2013-07-11T16:50:25.977 回答