【发布时间】:2010-07-29 23:32:39
【问题描述】:
我有一个具有各种属性的 Rails 模型以及与其他模型的 has_many 关系。在视图中,我希望用户能够输入/更改值,这将更改加载对象中的值,并在他们进行更改时返回从它们计算的结果。但是,在他们选择“保存”之前,我不希望数据库中的值发生变化。我遇到的问题是我与集合关联的变量在每次新更改后都从数据库中提取。因此,如果我使用以下内容:
@model.attributes = params[:model]
它会持续对模型的特定调用的长度,但下次用户进行更改时,集合会重新加载,除了最近的更改之外,所有先前的更改都会丢失。我试过使用实例变量,例如:
@costs ||= self.costs
但是每当我对其运行操作时,它都会从数据库中重新加载,覆盖之前的更改。例如
@costs[i].monthly = 10
有什么方法可以确保更改在整个会话中持续存在而不保存到数据库中?现在看起来我最好的选择可能是创建一个单独的模型来存储值,然后在用户完成后将它们保存回原始模型。
【问题讨论】:
标签: ruby-on-rails session attributes