2011-03-17 55 views
0

首次使用用戶長時間閱讀器。我已經徹底尋找了我通過強大的搜索引擎Google解決的問題的解釋,但是,我沒有提供任何重要的見解。Rails驗證失敗,但對象內存保持不變?

我需要能夠確保模型表單不會重新載入無效數據。由於存儲在服務器內存中的模型首先直接使用Web表單的參數進行編輯,然後檢查其有效性,而無需額外的代碼,無效的模型數據將始終發送回表單。這對我來說不太理想。我的問題是這樣的:我如何確保這不會發生?

我在想什麼,我需要一些機制來保存對象的狀態,然後用Web窗體發送的參數修改對象,然後在驗證失敗後將對象恢復到以前的,正確的和未修改的存在的狀態。

幫助!

感謝, 萊斯

回答

0

對象未在DB真正被修改,如果驗證失敗,即使對象是在形式的無效狀態......這背後的想法是,用戶希望查看他們犯的錯誤,以便他們糾正錯誤。

如果你不想這樣,那麼只要用WhateverObject.find(x)讀回對象,並將它賦給表單引用的變量,它就會將對象'還原'爲其以前未修改的狀態。

+0

另外,如果你已經有了對象,你可以執行'my_obj.reload'從數據庫重新加載它的狀態。 – Shadwell 2011-03-17 20:35:26

+0

確實如此,查看您所做的錯誤可能很有用。在我的具體情況中,這並不重要,但這是我未來要記住的重要一點。 在我的情況下,我能夠在我的模型控制器的更新方法的else子句中調用model.reload,完美工作,正是我所期待的! – 2011-03-18 15:28:07

0

要添加什麼concept47說,你還可以得到價值使用 某一特定領域object.field_was 看一看的ActiveRecord ::骯髒的細節(http://ar.rubyonrails.org/classes/ActiveRecord /Dirty.html)

使用該功能,您可以僅檢索具有驗證錯誤的字段的原始值。

相關問題