Rails验证失败但对象内存保持不变?

时间:2011-03-17 18:41:22

标签: ruby-on-rails ruby validation forms model

首次使用者长时间阅读。我已经通过强大的搜索引擎谷歌彻底寻找了我所遇到的问题的解释,但是我没有提出任何重要的见解。

我需要能够确保模型表单不会重载无效数据。由于存储在服务器上的存储器中的模型首先直接使用Web表单的参数进行编辑,然后检查其是否有效,因此无需其他代码无效的模型数据将始终发送回表单。这对我来说不太理想。我的问题是:我如何确保不会发生这种情况?

我在想的是我需要一些机制来保存对象的状态,然后再使用从Web表单发送的参数进行修改,然后在验证失败后将对象恢复为之前的,正确的和未修改的状态是

帮助!

谢谢, 莱斯

2 个答案:

答案 0 :(得分:0)

如果验证失败,对象实际上没有在db中修改,即使对象在表单中处于无效状态......这背后的想法是用户想要看到他们所做的错误,这样他们就可以纠正它们。

如果您不希望如此,那么只需使用WhateverObject.find(x)读回对象并将其分配给表单引用的变量,它就会将对象“恢复”到它的以前未修改的状态。

答案 1 :(得分:0)

要添加到concept47所说的内容,您还可以使用特定字段获取值   object.field_was 有关详细信息,请查看ActiveRecord :: Dirty(http://ar.rubyonrails.org/classes/ActiveRecord/Dirty.html)

使用它可以检索那些有验证错误的字段的原始值。