【发布时间】:2015-01-16 21:33:49
【问题描述】:
我已经阅读了Rails - How do I temporarily store a rails model instance? 和类似的问题,但我找不到成功的答案。
假设我有模型Customer,它可能包含大量附加信息(简单属性、其他表中的数据通过has_many 关系等...)。我希望应用程序的用户使用单个 Save 按钮访问单个页面中的所有数据。当用户对数据进行更改(即他更改简单属性、添加或删除has_many 项目、...)时,我希望应用程序更新模型,但不提交对数据库的更改 .只有当用户点击Save时,模型才必须被提交。
为了实现这一点,我需要 Rails 在 HTTP 请求之间保存模型。此外,两个不同的用户可能同时更改模型的数据,因此这些临时实例应该绑定到 Rails 会话。
有什么方法可以实现吗?这真的是个好主意吗?而且,如果不是,如何设计一个 Web 应用程序,其中模型中的更改不能保留在浏览器中,而是保留在服务器中,直到用户想要提交它们?
编辑
根据用户smallbutton.com的建议,我想知道serializing the model instance to a temporary file(其路径将存储在session哈希中),然后在每次新请求到达时重新加载它,会做的伎俩。它适用于所有情况吗?在序列化/反序列化过程中是否会丢失任何信息?
【问题讨论】: