可以在会话中存储一个小对象吗?

时间:2013-12-02 01:35:10

标签: ruby-on-rails session-variables

我的应用程序中的用户可以根据他们正在访问的marketplace访问不同类型的数据。

因此,用户可访问的不同数据包含marketplace_id。 Marketplace是一个小型模型对象,仅包含市场名称,ID和描述。

在会话对象中存储用户正在访问的市场是否可以?对象永远不会改变。

我想存储整个对象而不是id,因为我必须在每个屏幕上引用市场名称。

1 个答案:

答案 0 :(得分:3)

这实际上取决于您的具体应用,但我建议不要在会话中存储对象。避免这种情况的主要理由是,如果您更改了Marketplace对象中的数据,如果您需要在模型中添加/删除/更改属性,或者您想要添加方法,则可能会出现严重问题你手上的问题。

计算机非常擅长按ID查找表中的条目,所以一般来说我不会担心这种查找可能带来的额外负载。如果这是一个问题,我会考虑在服务器端缓存这些数据。

这是关于这个问题的railcast。同样,你应该完全做出自己的决定,但这些是避免它的原因。