2014-10-18 58 views
0

如何在保存失敗之後以及將視圖呈現給視圖之前訪問模型的屬性?我想改變他們回來,因爲他們是在該模型中修改Rails在保存失敗後訪問屬性

+0

重置實例變量解決了它。感謝所有 – Tiamon 2014-10-18 17:27:19

回答

0

可以使用對象的屬性重置爲初始值如下:

product.changes.each {|key,value| product.send("#{key}=", value.first)} 
0

最好的辦法是大概從數據庫加載:

product.reload 

這將拉動之前保存的內容並丟棄任何未保存的更改。

如果你想在手術前進行快照的模型:

before_attributes = product.attributes 

# ... Stuff that goes horribly wrong 

product.attributes = before_attributes 

將恢復所有基本屬性他們以前的狀態。

+0

也許問題不明確。該實例未保存在數據庫中,但由於模型中的驗證失敗。但是模型在保存之前也會修改一些屬性 – Tiamon 2014-10-18 17:23:01

+0

您可以回退的唯一一點是保存模型的最後一個點。如果沒有保存,除非你在這個時候捕捉模型並保留它,否則沒有什麼可以回退的。我已經添加了另一種方法來嘗試。 – tadman 2014-10-18 17:24:56

+0

重置控制器上實例的屬性解決了我的問題。非常感謝 – Tiamon 2014-10-18 17:29:28