2012-11-09 21 views
0

我試圖將一些對象從另一個模型移動到另一個模型。抓取複製模型並保存到新對象

quotes.labouritems獲取我想要的數據。

這不起作用:

newitems = quotes.labouritems.dup 
new invoice = invoice.labouritems.build(newitems) 

爲什麼我這樣做,這是我需要的數據從labouritems但不想保持相同的ID,否則任何時候他們得到quote.labourites更新將更新記錄在invoice.labouritems

回答

0

嘗試:

newitems = quotes.labouritems.clone 

在此基礎上測試,它應該工作:

class Foo 
end 

foo = Foo.new 
#=> #<Foo:0x00000002694cc0> 
bar = foo.clone 
#=> #<Foo:0x000000027e1f10> 
+0

是的,但我怎麼把它分配給發票模型 – user979587

+0

我不是一個ActiveRecord專家(或者Rails ),但可能類似於(但可能不是完全): 'invoice = Invoice.new(quotes.labouritems.to_h)' 您可能必須爲您的模型實現'to_h'方法,如果它不是那裏默認。我相信ActiveRecord允許你從一個散列中創建一個新的方法,如果沒有,你可能必須實現一個'initialize'方法來初始化發票中的一個散列。 雖然這樣做可能有一個更簡單的「鐵血」方式。 – jmervine