簡體   English   中英

在Rails中復制模型實例

[英]Copy model instances in Rails

我有一個模型Foo與屬性id, name, location 我有一個Foo的例子:

f1 = Foo.new
f1.name = "Bar"
f1.location = "Foo York"
f1.save

我想復制f1並從該副本創建另一個Foo模型實例,但我不希望f1.id繼續轉移到f2.id (我不想明確指定它,我想要db處理它,因為它應該)。

除了手動復制每個屬性之外,還有一種簡單的方法嗎? 任何內置函數或寫一個是最好的路線?

謝謝

根據以下問題,如果您使用Rails> = 3.1,則可以使用object.dup

復制activerecord記錄的最簡單方法是什么?

這就是ActiveRecord :: Base#clone方法的用途:

@bar = @foo.clone

@bar.save

一個錯誤的方法是:

f2 = Foo.new( f1.attributes )     # wrong!
f2.save                           # wrong!

或者在一行中,但仍然是錯誤的

f2 = Foo.create( f1.attributes )  # wrong!

查看評論了解詳情

您可以在rails中制作重復記錄

@bar = @foo.dup
@bar.save!

您可以使用rails提供的內置attributes方法。 例如

f2 = Foo.new(f1.attributes)

要么

f2 = Foo.new
f2.attributes = f1.attributes

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM