我有一個ActiveRecord模型對象Foo
;它代表一個標準的數據庫行。在實例上防止ActiveRecord保存()
我希望能夠顯示此對象的實例的修改版本。我想重用這個類,因爲它已經有了我需要的所有方面。 (例如:我已經有一個顯示適當屬性的視圖)。基本上我想克隆模型實例,修改它的一些屬性,並將其反饋給調用者(視圖,測試等)。
我做不是希望這些屬性修改回到數據庫中。不過,我確實希望在克隆版本中包含id
屬性,因爲它可以更輕鬆地處理路由助手。因此,我打算調用ActiveRecord::Base.clone()
,手動設置克隆實例的ID,然後對新實例進行適當的屬性更改。雖然這讓我擔心;一個save()
在修改的實例上,我的原始數據將會被破壞。
所以,我想鎖定新的實例,以便它不會傷害其他任何東西。我已經打算打電話給freeze()
(理解這可以防止進一步修改對象,但是documentation isn't terribly clear)。但是,我沒有看到任何明顯的方法來阻止save()。
實現此目標的最佳方法是什麼?
如果您需要周圍的顯著亂用標準的ActiveRecord對象,有可能接近問題的更好的方法。 – Matchu 2010-05-30 00:05:10
我當然願意替代 – 2010-05-30 00:44:06