2012-01-27 51 views
4

今天我試圖克隆我的一個對象,但它似乎不像文檔中那樣工作。Rails 3.2中克隆方法的問題

在我的控制檯我做:

u = User.find 1 
nu = u.clone 
nu.new_record? 
    => false 
nu.new? 
    NoMethodError: undefined method `new?' for #<User:0x007fbf137b8278> 

所以它看起來像克隆的對象僅僅是一個重複的,因爲它具有相同的ID喜歡舊的,但根據文件,它應該是新對象?

的clone()

返回尚未分配的ID尚未與被視爲新資源的資源的克隆。

萊恩= Person.find的(1)

not_ryan = ryan.clone

not_ryan.new? #=> true

+0

我試着在控制檯和new_record完全相同的序列?回覆真實。 – klochner 2012-01-27 20:22:44

+0

似乎它已從rails> 3.0.9中移除 – Johny 2012-01-27 20:31:21

回答

1

這對於升級者來說是一個醜陋的陷阱:調用'clone'不會拋出錯誤或任何東西 - 它只會返回原始模型。因此,你編寫的任何代碼都應該複製一些模型並對新副本進行修改,而不是默默修改原始代碼!