2011-02-16 72 views
4

我將模型中的對象屬性複製到另一個模型中;使用Ruby On Rails 3複製對象屬性

@estimate = Estimate.find(params[:estimate_id]) 
@invoice = Invoice.create(@estimate.attributes) 

在該副本中,它只是複製模型只屬性, (預算份新的發票),但估算模型和發票模型具有「項」模式HABTM關係。

如何用估計和它的項目一起創建新的@invoice對象?困惑......

更新:

  • 估值:has_and_belongs_to_many:項目(estimates_items表) accepts_nested_attributes_for:項目
  • 發票:has_and_belongs_to_many:項目(invoices_items表) accepts_nested_attributes_for:項目
  • 項目:belongs_to:估計 belongs_to:發票

謝謝。

回答

5

我對你在這裏的意義有點困惑。你是否想要複製attrs並在連接表中創建一條記錄來同時關聯這兩條記錄?如果是的話,這應該做的伎倆,我認爲(未經測試)...

@estimate = Estimate.find(params[:estimate_id]) 
@invoice = Invoice.create(@estimate.attributes.merge(:items => @estimate.items)) 
+0

是的。使用Item屬性估算複製爲發票「克隆」。項目模型是HABTM與估計和發票的關聯。測試了這個代碼。它返回「未知屬性:估計值」。看起來問題來自嵌套attrs – Harry 2011-02-16 16:19:42