我有一个Rails模型,它具有各种属性,并且与其他模型有很多关系。在视图中,我希望用户能够输入/更改值,这些值将更改已加载对象中的值,并在它们进行更改时返回从它们计算的结果。但是,在选择“保存”之前,我不希望数据库中的值发生更改。我遇到的问题是,每次新的更改后,我与数据库关联的变量都会从数据库中提取出来。所以,如果我使用以下内容:
@model.attributes = params[:model]
它持续对模型的特定调用的长度,但是下次用户进行更改时,重新加载集合,丢失除最近一次之外的所有先前更改。我尝试过使用实例变量,例如:
@costs ||= self.costs
但每当我对它运行一个操作时,它会从数据库重新加载,覆盖以前的更改。 E.g。
@costs[i].monthly = 10
有没有办法确保更改在整个会话中保留而不保存到数据库?现在,看起来我最好的选择可能是创建一个单独的模型来存储值,然后在用户完成时将它们保存回原始模式。
答案 0 :(得分:1)
您可以在进行更改时将其重新保存到params
哈希,或者尝试使用session
哈希(但您必须记住清除它)。
http://guides.rubyonrails.org/security.html#what-are-sessions
答案 1 :(得分:0)
简而言之,请求之间的数据不会持续存在。当时我的印象是属性持有会话长度的值。我已经了解到,唯一坚持的是存储在数据库中的值以及在params和session哈希中来回传递的值。